Postgresql và pgadmin với docker

Do cài qua Portainer nên không dùng docker-compose.yml. Dưới đây là một mẫu file yml để tiện dùng về sau.

version: '3.8'
services:
  postgres:
    image: postgres:latest
    environment:
      POSTGRES_USER: youruser
      POSTGRES_PASSWORD: yourpassword
      POSTGRES_DB: yourdb
    networks:
      - pg-network
    volumes:
      - pg-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"  # 👈 mở port
      #- "127.0.0.1:5432:5432" # --> Chỉ mở port cho local (dùng trên production)
  pgadmin:
    image: dpage/pgadmin4:latest
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: admin
    ports:
      - "8080:80"
    networks:
      - pg-network
    depends_on:
      - postgres
networks:
  pg-network:
    driver: bridge
volumes:
  pg-data:

Nếu không dùng docker-compose thì về cơ bản dùng chung một network (chẳng hạn pg-network như trên file compose kia) là được.

Để tạo một network riêng trên docker:

docker network create pg-network

Tiếp đến, mình cần tạo một volume riêng (vùng riêng trên ổ đĩa để lưu dữ liệu, nếu xóa hoặc cập nhật container)

docker volume create pg-data

Nếu không dùng Portainer thì chạy 2 lệnh sau, thay các dữ liệu cá nhân về mật khẩu, email vv… Điểm quan trọng là 2 container này cần chung 1 network.

docker run -d --name postgres --network pg-network \
  -e POSTGRES_USER=youruser \
  -e POSTGRES_PASSWORD=yourpassword \
  -e POSTGRES_DB=yourdb \
  -v my-pg-data:/var/lib/postgresql/data \
  --restart unless-stopped \
  postgres:latest

docker run -d --name pgadmin --network pg-network -p 8080:80 -e PGADMIN_DEFAULT_EMAIL=admin@admin.com -e PGADMIN_DEFAULT_PASSWORD=admin dpage/pgadmin4:latest

Trong Portainer thì tùy chỉnh qua giao diện UI nên trực quan hơn. Chú ý tùy chọn khởi động lại khi nào. Nên chọn unless-stopped.

Để login vào trong container đã cài qua docker:

docker exec -t postgres bash

Lệnh trên sẽ login vào trong container và mở bash.

Để sao lưu database:

docker exec -t postgres-container pg_dump -U username -d test_database -F p > /path/to/backup.sql

Có tham khảo tại https://vuyisile.com/running-postgresql-in-docker/

Leave a Comment