← Về mục lục
BỘ CÔNG CỤ / TRA CỨU NHANH

Dockerfile & Compose — patterns

Mở nhanh khi làm lab hoặc khi xử lý một vấn đề thường gặp. Có thể in riêng trang này.

Dockerfile tối giản

FROM python:3.13-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app/ ./app/
RUN useradd -u 10001 -r appuser
USER 10001
EXPOSE 8080
CMD ["python", "-m", "app.server"]

Compose có healthcheck và volume

services:
  db:
    image: postgres:18
    volumes: [pgdata:/var/lib/postgresql]
    environment:
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    secrets: [db_password]
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      retries: 10
volumes:
  pgdata:
secrets:
  db_password:
    file: ./secrets/db_password.txt

Triển khai và debug

docker compose config --quiet
docker compose up -d --build
docker compose ps -a
docker compose logs --tail=100 db
docker compose down    # không -v

Lưu ý: Ví dụ này cần điều chỉnh đúng user/DB name, có mật khẩu lab file và không có application service. PostgreSQL 18 nên mount dữ liệu tại /var/lib/postgresql.