# Container environment variables are loaded in the following priority order: # 1. `environment` service option # 2. Shell environment variables # 3. `env_file` service option # 4. Dockerfile `ENV` directives # # Environment variables referenced in this Compose file are loaded in the # following priority order: # 1. Shell environment variables # 2. `.env` file version: '3' services: rails: build: args: ruby_version: ${RUBY_VERSION} context: . dockerfile: Dockerfile command: bundle exec rails server --binding=0.0.0.0 --port=${PORT} environment: - DB_HOST - DB_NAME=${POSTGRES_DB} - DB_USER=${POSTGRES_USER} - DB_PASS=${POSTGRES_PASSWORD} networks: - helpingculture ports: - '${PORT}:${PORT}' volumes: - '.:/app' - 'gems_data:/usr/local/bundle' working_dir: /app nginx: image: linuxserver/letsencrypt cap_add: - NET_ADMIN environment: - SUBDOMAINS - URL - VALIDATION - DNSPLUGIN - EMAIL=${CLOUDFLARE_EMAIL} - CLOUDFLARE_TOKEN - CLOUDFLARE_EMAIL networks: - helpingculture ports: - '80:80' - '443:443' volumes: - './config/nginx-site.conf:/config/nginx/site-confs/default' postgres: image: 'postgres:${POSTGRES_VERSION}-alpine' environment: - POSTGRES_USER - POSTGRES_PASSWORD - POSTGRES_DB networks: - helpingculture ports: - '5432:5432' volumes: - 'postgres_data:/var/lib/postgresql/data' terraform: build: args: terraform_version: ${TERRAFORM_VERSION} sentry_plugin_version: ${SENTRY_PLUGIN_VERSION} context: . dockerfile: Dockerfile-terraform environment: - TFE_HOSTNAME - TFE_TOKEN - TFE_ORGANIZATION - TFE_WORKSPACE - TF_VAR_app_name - TF_VAR_digitalocean_token - TF_VAR_mailgun_api_key - TF_VAR_mailgun_sending_domain - TF_VAR_mailgun_smtp_password - TF_VAR_root_ssh_public_key - TF_VAR_root_ssh_private_key_base64 - TF_VAR_sentry_token - TF_VAR_cloudflare_zone_name - TF_VAR_cloudflare_zone - TF_VAR_cloudflare_email - TF_VAR_cloudflare_token volumes: - terraform_data:/root/.terraform - ./terraform:/config working_dir: /config ansible: build: args: ansible_version: ${ANSIBLE_VERSION} context: . dockerfile: Dockerfile-ansible volumes: - ansible_data:/var - ./ansible:/ansible/playbooks working_dir: /ansible/playbooks networks: helpingculture: # Define names of volumes that you want to be preserved between container restarts. # These are referenced above in the `volumes` section of the service. volumes: ansible_data: gems_data: postgres_data: terraform_data: