1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- # Docker Compose file for Vapor
- #
- # Install Docker on your system to run and test
- # your Vapor app in a production-like environment.
- #
- # Note: This file is intended for testing and does not
- # implement best practices for a production deployment.
- #
- # Learn more: https://docs.docker.com/compose/reference/
- #
- # Build images: docker-compose build
- # Start app: docker-compose up app
- # Start database: docker-compose up db
- # Run migrations: docker-compose run migrate
- # Stop all: docker-compose down (add -v to wipe db)
- #
- version: '3.7'
- volumes:
- db_data:
- x-shared_environment: &shared_environment
- LOG_LEVEL: ${LOG_LEVEL:-debug}
- DATABASE_HOST: db
- DATABASE_NAME: vapor_database
- DATABASE_USERNAME: vapor_username
- DATABASE_PASSWORD: vapor_password
-
- services:
- app:
- image: api:latest
- build:
- context: .
- environment:
- <<: *shared_environment
- depends_on:
- - db
- ports:
- - '8080:8080'
- # user: '0' # uncomment to run as root for testing purposes even though Dockerfile defines 'vapor' user.
- command: ["serve", "--env", "production", "--hostname", "0.0.0.0", "--port", "8080"]
- migrate:
- image: api:latest
- build:
- context: .
- environment:
- <<: *shared_environment
- depends_on:
- - db
- command: ["migrate", "--yes"]
- deploy:
- replicas: 0
- revert:
- image: api:latest
- build:
- context: .
- environment:
- <<: *shared_environment
- depends_on:
- - db
- command: ["migrate", "--revert", "--yes"]
- deploy:
- replicas: 0
- db:
- image: postgres:16-alpine
- volumes:
- - db_data:/var/lib/postgresql/data/pgdata
- environment:
- PGDATA: /var/lib/postgresql/data/pgdata
- POSTGRES_USER: vapor_username
- POSTGRES_PASSWORD: vapor_password
- POSTGRES_DB: vapor_database
- ports:
- - '5432:5432'
|