Using docker compose we can achieve this. In the following docker-compose code we are binding the local folder to the folder in the docker for data persistence.
Copy the code to a file named docker-compose.yml
and run the command docker-compose -f docker-compose.yml up
version: "3.5" services: postgres: container_name: postgres_container image: postgres environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-changeme} POSTGRES_DB: ${POSTGRES_DB} PGDATA: /data/postgres volumes: - ./db_data:/data/postgres ports: - "5432:5432" networks: - postgres restart: unless-stopped pgadmin: container_name: pgadmin_container image: dpage/pgadmin4 environment: PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org} PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin} PGADMIN_CONFIG_SERVER_MODE: "False" volumes: # The local folder owner and group must be set to 5050 # for the volume to work. Otherwise pgadmin is not able to # write to the local folder # sudo chown -R 5050:5050 pgadmin_data - ./pgadmin_data:/var/lib/pgadmin ports: - "${PGADMIN_PORT:-5050}:80" networks: - postgres restart: unless-stopped networks: postgres: driver: bridge
Top comments (1)
Hey Abbaz, great guide! If you're looking for a more streamlined way to manage PostgreSQL databases, check out Flashboard. Iām one of the creators, and it offers a web-based UI that simplifies PostgreSQL management without additional setup like Docker. Would love to hear your thoughts!