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/