elixir-devcontainer/.devcontainer/docker-compose.yml
2025-07-20 14:25:30 +00:00

61 lines
No EOL
1.6 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.
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