66 lines
1.5 KiB
YAML
66 lines
1.5 KiB
YAML
---
|
|
services:
|
|
db:
|
|
image: 'postgres:16.3-alpine'
|
|
hostname: &db_host db
|
|
init: true
|
|
environment:
|
|
POSTGRES_USER: &db_user postgres
|
|
POSTGRES_PASSWORD: &db_pass postgres
|
|
POSTGRES_DB: &db_name postgres
|
|
volumes:
|
|
- './priv/docker/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql'
|
|
- 'db_data:/var/lib/postgresql/data'
|
|
restart: unless-stopped
|
|
app:
|
|
image: &app_image 'joaodubas/ex_trainer:${EX_TRAINER_TAG:-dev}'
|
|
build:
|
|
target: builder
|
|
context: .
|
|
hostname: app
|
|
depends_on:
|
|
- db
|
|
init: true
|
|
environment: &app_environment
|
|
POSTGRES_HOST: *db_host
|
|
POSTGRES_USER: *db_user
|
|
POSTGRES_PASS: *db_pass
|
|
POSTGRES_NAME: wabanex_dev
|
|
volumes: &app_volumes
|
|
- '.:/opt/app'
|
|
- 'app_build:/opt/app/_build'
|
|
- 'app_deps:/opt/app/deps'
|
|
working_dir: /opt/app
|
|
restart: unless-stopped
|
|
entrypoint: sleep
|
|
command: infinity
|
|
db_setup:
|
|
image: *app_image
|
|
depends_on:
|
|
- db
|
|
profiles:
|
|
- setup
|
|
environment: *app_environment
|
|
volumes: *app_volumes
|
|
restart: 'no'
|
|
command: |
|
|
mix ecto.setup \
|
|
&& MIX_ENV=test mix ecto.setup
|
|
db_migrate:
|
|
image: *app_image
|
|
depends_on:
|
|
- db
|
|
profiles:
|
|
- migrate
|
|
environment: *app_environment
|
|
volumes: *app_volumes
|
|
restart: 'no'
|
|
command: |
|
|
mix ecto.migrate \
|
|
&& MIX_ENV=test mix.ecto.migrate
|
|
|
|
volumes:
|
|
db_data: {}
|
|
app_build: {}
|
|
app_deps: {}
|