63 lines
No EOL
1.9 KiB
YAML
63 lines
No EOL
1.9 KiB
YAML
version: '3'
|
|
|
|
# NOTE on `network_mode`
|
|
# All of the containers are bound together and share the same network context as the DB container.
|
|
# This means that each service needs to be listening to a unique port since they are all effectively
|
|
# mount to the same interface. i.e. Execute can connect to postgres on 127.0.0.1:5432 even though
|
|
# they are separate containers. Note that if, for some reason, Postgres fails to start, the other
|
|
# containers are going to have all manner of mysterious network connectivity issues.
|
|
|
|
services:
|
|
app:
|
|
build:
|
|
context: ..
|
|
dockerfile: .devcontainer/Dockerfile
|
|
volumes:
|
|
- ..:/workspace:cached
|
|
depends_on:
|
|
- postgres
|
|
|
|
environment:
|
|
|
|
# Configure MISE to use DEV and DEVCONTAINER environments
|
|
MISE_ENV: dev,devcontainer
|
|
|
|
# Setup postgres environment variables
|
|
PGUSER: postgres
|
|
PGDATABASE: app
|
|
PGPASSWORD: postgres
|
|
PGHOST: postgres
|
|
|
|
# Overrides default command so things don't shut down after the process ends.
|
|
command: sleep infinity
|
|
|
|
network_mode: service:postgres
|
|
|
|
caddy:
|
|
image: caddy:latest
|
|
restart: unless-stopped
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile
|
|
- ./offline.html:/data/offline.html
|
|
network_mode: service:postgres
|
|
|
|
pgweb:
|
|
image: sosedoff/pgweb
|
|
restart: unless-stopped
|
|
environment:
|
|
- PGWEB_DATABASE_URL=postgres://postgres:postgres@127.0.0.1:5432/app?sslmode=disable
|
|
- PGWEB_LOCK_SESSION=true # disable connect/disconnect buttons since they aren't useful here
|
|
depends_on:
|
|
- postgres # my database container is called postgres, not db
|
|
network_mode: service:postgres
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_DB: app
|
|
POSTGRES_PASSWORD: postgres
|
|
healthcheck:
|
|
test: pg_isready -U postgres -h 127.0.0.1
|
|
interval: 5s |