← Tất cả bài viết

Docker Compose: dựng Postgres + Spring Boot cho môi trường local

22/07/2026

Khi phát triển local, cài PostgreSQL trực tiếp lên máy vừa bừa vừa khó đồng bộ giữa thành viên nhóm. Docker Compose gói toàn bộ hạ tầng vào một file, ai clone về cũng chạy được giống nhau.

File compose cơ bản

services:
  db:
    image: postgres:16
    environment:
      POSTGRES_DB: app
      POSTGRES_PASSWORD: secret
    ports: ["5432:5432"]
    volumes: ["pgdata:/var/lib/postgresql/data"]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      retries: 5

  app:
    build: .
    depends_on:
      db:
        condition: service_healthy
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/app
    ports: ["8080:8080"]

volumes:
  pgdata:

Những điểm quan trọng

  • Volume: pgdata giữ dữ liệu database qua các lần khởi động lại — không mất khi docker compose down
  • Healthcheck + depends_on condition: app chỉ khởi động sau khi database thật sự sẵn sàng, không chỉ khi container tồn tại
  • Tên service làm hostname: app kết nối tới db:5432, không phải localhost, vì chúng ở cùng mạng Docker

Lệnh hay dùng

docker compose up -d      # chạy nền
docker compose logs -f app
docker compose down       # dừng, giữ volume
docker compose down -v    # dừng, XOÁ luôn volume

👉 Dùng thử công cụ liên quan trên dev-hub: YAML Formatter — chạy hoàn toàn trong trình duyệt, không gửi dữ liệu lên server.