In this article, we will explore how to configure PostgreSQL using Docker and Docker Compose and how to integrate it into a Go application. This approach is useful to simplify local development and application deployment.
Configuring Docker Compose
Let's create a docker-compose.yml
file to configure PostgreSQL:
version: '3.8'
services:
db:
image: postgres:15
container_name: postgres_container
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydb
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
Starting PostgreSQL with Docker Compose
Run the following command to start the container:
docker compose up -d
Check that the container is running:
docker ps
Connecting to PostgreSQL in Go
Add the pq
library to your Go project to connect to PostgreSQL:
go get github.com/lib/pq
Create a Go file, for example, main.go
, with the following code:
package main
import (
"database/sql"
"fmt"
_ "github.com/lib/pq"
)
func main() {
connStr := "postgres://user:password@localhost:5432/mydb?sslmode=disable"
db, err := sql.Open("postgres", connStr)
if err != nil {
panic(err)
}
defer db.Close()
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Successfully connected to PostgreSQL!")
}
Testing the Application
Run the Go application to test the database connection:
go run main.go
If everything is configured correctly, you should see the message:
Successfully connected to PostgreSQL!
Conclusion
In this article, we configured PostgreSQL using Docker and Docker Compose, and we created a Go application to connect to the database. This workflow greatly simplifies database management in local development.