Opsætning af Postgres i en Docker container på en Droplet
Vi har allerede oprettet en Droplet med Ubuntu og Docker hos Digital Ocean. Ideen er nu at vi skal have Postgres til at køre i en container. Og mere specifikt - den samme version, som kører lokalt på vores laptops. Det kræver at vi opretter, tilpasser og eksekverer en docker-compose.yml
fil til formålet. Vi skal være omhyggelige med at vælge et godt password til Postgres, så ikke vi bliver hacket. Følg nedenstående vejledning:
1. Opret en ny bruger i Postgres
-
Log ind på din droplet som
jetty
og stå i din hjemme folder~jetty
-
Opret en folderen
deployment
og hop derned:mkdir deployment cd deployment
-
Opret filen
docker-compose.yml
ved hjælp afnano
:nano docker-compose.yml
-
Indsæt følgende indhold i
docker-compose.yml
(husk at ændre password):version: '3.9' services: db: image: postgres:16.2 container_name: db restart: unless-stopped environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: <dit_sikre_password> # Change this password and pick a hard one volumes: - ./postgres_data:/var/lib/postgresql/data/ ports: - "5432:5432" volumes: postgres_data:
-
Gem og luk filen med
Ctrl+X
ogY
ogEnter
-
Kør
docker compose
:sudo docker compose up -d
Så skulle postgres gerne køre. Du kan tjekke det ved at køre docker ps
og se om containeren db
kører.
2. Tilføj den nye remote Postgres server i PgAdmin (på din lokale maskine)
- Host name/address:
- Port: 5432
- password:
(se docker-compose.yml på din Droplet)
Husk at du skal have åbnet port 5432 i din Droplet Firewall for at kunne tilgå Postgres fra din lokale maskine. Dvs, fra IP nummeret på ydersiden af din router.
3. Bonus Docker Compose kommandoer
Hvis du ønsker at stoppe Docker
sudo docker compose down
Nulstilling af Postgres (fjerner alle databaserne)
(-v) // remove volumes
sudo docker compose down -v
sudo rm -rf ./data
Tjek loggen for postgres containeren
sudo docker logs db