Peace of mind from prototype to production
docker pull library/postgres
docker run -d --name phoenix --restart always postgres:18
podman run -d --name phoenix --restart always postgres:18
skopeo inspect docker://docker.io/library/postgres:18
oras pull postgres:18
docker compose up -d
services:
postgresql:
image: postgres:18
command: -c max_connections=300
environment:
POSTGRES_PASSWORD: postgres
tmpfs:
- /var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres -h 127.0.0.1"]
start_period: 60s
start_interval: 2s
interval: 120s
timeout: 3s
retries: 1
mysql:
image: mysql:26
command: --max-connections=300
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
tmpfs:
- /var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 --protocol=TCP --silent"]
start_period: 60s
start_interval: 2s
interval: 120s
timeout: 3s
retries: 1
mssql:
profiles:
- mssql
image: mcr.microsoft.com/mssql/server:2019-latest
environment:
ACCEPT_EULA: "Y"
SA_PASSWORD: "some!Password"
tmpfs:
- /var/opt/mssql
healthcheck:
test: ["CMD-SHELL", "/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P \"$$SA_PASSWORD\" -C -Q 'SELECT 1' 2>/dev/null || /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P \"$$SA_PASSWORD\" -Q 'SELECT 1' 2>/dev/null"]
start_period: 60s
start_interval: 2s
interval: 120s
timeout: 3s
retries: 1
runner:
profiles:
- runner
build:
context: .
dockerfile: Dockerfile
args:
- ELIXIR_IMAGE_TAG
image: phoenix-integration-runner:${ELIXIR_IMAGE_TAG}
init: true
volumes:
- ..:/phoenix
- build_cache:/phoenix/integration_test/_build
- deps_cache:/phoenix/integration_test/deps
- installer_generated_apps_tmp:/phoenix/installer/tmp
working_dir: /phoenix/integration_test
environment:
ELIXIR_ASSERT_TIMEOUT: 10000
MIX_OS_DEPS_COMPILE_PARTITION_COUNT: ${MIX_OS_DEPS_COMPILE_PARTITION_COUNT:-2}
MAKEFLAGS: ${MAKEFLAGS:--j2}
depends_on:
postgresql:
condition: service_healthy
mysql:
condition: service_healthy
mssql:
condition: service_healthy
required: false
volumes:
build_cache:
name: phoenix_integration_build_cache_${ELIXIR_IMAGE_TAG}
deps_cache:
name: phoenix_integration_deps_cache_${ELIXIR_IMAGE_TAG}
installer_generated_apps_tmp: