docbrown/container-compose.yml
Joe Doss 1d4685219d
Multistage container builds (#11468)
* WIP multi-stage container build.

* Move to a multistage build process in the Containerfile.

* Enable testing container

* Finalize the multistage build script and Containerfile. Ooof!

I got blocked for a bit with this bugger:

Step 27/32 : COPY --from=builder --chown=${APP_USER}:${APP_USER} ${APP_HOME} ${APP_HOME}
failed to copy files: failed to copy directory: Error processing tar file(exit status 1): Container ID 100999 cannot be mapped to a host ID

but https://github.com/phusion/passenger-docker/issues/235#issuecomment-636318827

was a good shove in the right direction!

* Fix bugs on container build script.

* Adjust compose files to use multistage builds.

* Add in Buildkite pipeline for building containers.

* Update CODEOWNERS to claim ownership over things that Systems Eng cares about
2020-11-19 10:03:35 -06:00

148 lines
4.5 KiB
YAML

version: "3"
services:
rails:
build: .
target: development
image: forem-rails:latest
container_name: forem_rails
ports:
- "3000:3000"
depends_on:
- bundle
- db
- elasticsearch
- redis
- yarn
environment:
RAILS_ENV: development
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
REDIS_URL: redis://redis:6379
REDIS_SESSIONS_URL: redis://redis:6379
RACK_TIMEOUT_WAIT_TIMEOUT: 10000
RACK_TIMEOUT_SERVICE_TIMEOUT: 10000
STATEMENT_TIMEOUT: 10000
APP_DOMAIN: rails
volumes:
- .:/opt/apps/forem:z
entrypoint: ["dockerize", "-wait", "tcp://db:5432", "-wait", "http://elasticsearch:9200", "-wait", "tcp://redis:6379", "-wait", "file:///opt/apps/bundle/bundle_finished", "-timeout", "300s", "./scripts/entrypoint-dev.sh"]
command: ["bundle", "exec", "rails","server","-b","0.0.0.0","-p","3000"]
bundle:
image: forem-rails:latest
container_name: forem_bundle
environment:
RAILS_ENV: development
REDIS_SIDEKIQ_URL: redis://redis:6379
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
volumes:
- .:/opt/apps/forem:z
entrypoint: ["bash"]
command: ["./scripts/bundle.sh"]
yarn:
image: forem-rails:latest
container_name: forem_yarn
environment:
RAILS_ENV: development
REDIS_SIDEKIQ_URL: redis://redis:6379
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
volumes:
- .:/opt/apps/forem:z
entrypoint: ["bash", "-c"]
command: ["yarn install --dev"]
webpacker:
image: forem-rails:latest
container_name: forem_webpacker
depends_on:
- rails
- yarn
environment:
RAILS_ENV: development
REDIS_SIDEKIQ_URL: redis://redis:6379
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
volumes:
- .:/opt/apps/forem:z
entrypoint: ["dockerize", "-wait", "file:///opt/apps/forem/node_modules/.bin/webpack-dev-server", "-timeout", "300s"]
command: ["./bin/webpack-dev-server"]
seed:
image: forem-rails:latest
container_name: forem_seed
depends_on:
- rails
- redis
- db
- elasticsearch
environment:
RAILS_ENV: development
REDIS_SIDEKIQ_URL: redis://redis:6379
REDIS_URL: redis://redis:6379
REDIS_SESSIONS_URL: redis://redis:6379
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
volumes:
- .:/opt/apps/forem:z
entrypoint: ["dockerize", "-wait", "tcp://db:5432", "-wait", "http://elasticsearch:9200", "-wait", "tcp://redis:6379", "-wait", "http://rails:3000", "-timeout", "300s"]
command: ["bundle", "exec", "rake","db:seed"]
sidekiq:
image: forem-rails:latest
container_name: forem_sidekiq
depends_on:
- rails
- redis
- db
- elasticsearch
environment:
RAILS_ENV: development
REDIS_SIDEKIQ_URL: redis://redis:6379
DATABASE_URL: postgresql://forem:forem@db:5432/PracticalDeveloper_development
ELASTICSEARCH_URL: http://elasticsearch:9200
volumes:
- .:/opt/apps/forem:z
entrypoint: ["dockerize", "-wait", "tcp://db:5432", "-wait", "http://elasticsearch:9200", "-wait", "tcp://redis:6379", "-wait", "http://rails:3000", "-timeout", "300s"]
command: ["bundle", "exec", "sidekiq","-c","2"]
db:
image: postgres:11-alpine
container_name: forem_postgresql
environment:
POSTGRES_USER: forem
POSTGRES_PASSWORD: forem
POSTGRES_DB: PracticalDeveloper_development
ports:
- "5432:5432"
volumes:
- db_data:/var/lib/postgresql/data:Z
redis:
image: "redis"
container_name: forem_redis
ports:
- "6379:6379"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.5.2
container_name: forem_elasticsearch
environment:
- cluster.name=forem
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.type=single-node"
- xpack.security.enabled=false
- xpack.monitoring.enabled=false
- xpack.graph.enabled=false
- xpack.watcher.enabled=false
ports:
- "9200:9200"
# volumes:
# - es_data:/usr/share/elasticsearch/data:Z
volumes:
db_data:
# es_data: