Via windows eu não sei exatamente se roda todas as imagens (acredito que sim). Mas no macOS constumo utilizar via docker run
mesmo para desenvolvimento.
docker run -d \
--name postgres \
-p 5432:5432 \
-v ~/apps/postgres:/var/lib/postgresql/data \
-e POSTGRES_PASSWORD=docker \
-e POSTGRES_USER=docker \
-e POSTGRES_DB=expenses_tracker \
postgres:14-alpine
--name = nome que você quer identificar quando rodar o docker ps
ou docker ps -a
.
-p = porta a primeira é do container a segunda é a que sua máquina vai identificar.
-v = é onde você quer salvar dentro do container as informações (volumes).
-e = variáveis de ambiente, que no caso do postgress existe essas entre muitas outras.
postgres:14-alpine
é a imagem que eu escolhi, geralmente as que possuem alpine
são menores, mas entrega praticamente 100% do que é preciso.
Já no docker compose geralmente utilizado isso
version: '3.8'
services:
db:
image: postgres:14-alpine # imagem a ser utilizada
restart: always # reinicia automáticamente quando acontece algum erro
environment: # o -e do docker run supracitado
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
ports:
- '5432:5432'
volumes:
- db:/var/lib/postgresql/data
volumes:
db:
driver: local
Neste site você consegue ter mais informações: https://geshan.com.np/blog/2021/12/docker-postgres/