163 lines
4.1 KiB
YAML
163 lines
4.1 KiB
YAML
x-app: &app
|
|
build:
|
|
target: development
|
|
context: .
|
|
args:
|
|
PG_MAJOR: '13'
|
|
image: ghcr.io/forem/forem:1.0.0-development
|
|
environment: &env
|
|
NODE_ENV: ${NODE_ENV:-development}
|
|
RAILS_ENV: ${RAILS_ENV:-development}
|
|
tmpfs:
|
|
- /tmp
|
|
- /app/tmp/pids
|
|
|
|
x-backend: &backend
|
|
<<: *app
|
|
stdin_open: true
|
|
tty: true
|
|
volumes:
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}:/app:cached
|
|
- bundle:/usr/local/bundle
|
|
- cypress:/root/.cache/Cypress
|
|
- rails_cache:/app/tmp/cache
|
|
- assets:/app/public/assets
|
|
- node_modules:/app/node_modules
|
|
- builds:/app/public/builds
|
|
- history:/usr/local/hist
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}/.dockerdev/.psqlrc:/root/.psqlrc:ro
|
|
environment: &backend_environment
|
|
<<: *env
|
|
CHROME_URL: http://chrome:3333
|
|
REDIS_URL: redis://redis:6379/
|
|
DATABASE_URL: postgres://postgres:postgres@postgres:5432
|
|
DATABASE_URL_TEST: postgres://postgres:postgres@postgres:5432
|
|
MALLOC_ARENA_MAX: 2
|
|
WEB_CONCURRENCY: ${WEB_CONCURRENCY:-1}
|
|
BOOTSNAP_CACHE_DIR: /usr/local/bundle/_bootsnap
|
|
XDG_DATA_HOME: /app/tmp/cache
|
|
YARN_CACHE_FOLDER: /app/node_modules/.yarn-cache
|
|
HISTFILE: /usr/local/hist/.bash_history
|
|
PSQL_HISTFILE: /usr/local/hist/.psql_history
|
|
IRB_HISTFILE: /usr/local/hist/.irb_history
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
|
|
services:
|
|
devcontainer:
|
|
<<: *backend
|
|
environment:
|
|
MALLOC_ARENA_MAX: 2
|
|
WEB_CONCURRENCY: ${WEB_CONCURRENCY:-1}
|
|
REDIS_URL: redis://redis:6379/
|
|
DATABASE_URL: postgres://postgres:postgres@postgres:5432
|
|
DATABASE_URL_TEST: postgres://postgres:postgres@postgres:5432
|
|
CHROME_URL: http://chrome:3333
|
|
volumes:
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}:/workspaces/forem:cached
|
|
- bundle:/usr/local/bundle
|
|
- cypress:/root/.cache/Cypress
|
|
- rails_cache:/workspaces/forem/tmp/cache
|
|
- assets:/workspaces/forem/public/assets
|
|
- node_modules:/workspaces/forem/node_modules
|
|
- history:/usr/local/hist
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}/.dockerdev/.psqlrc:/root/.psqlrc:ro
|
|
- /var/run/docker.sock:/var/run/docker-host.sock
|
|
command: sleep infinity
|
|
tmpfs:
|
|
- /workspaces/forem/tmp/pids
|
|
ports:
|
|
- '3000:3000'
|
|
|
|
rails:
|
|
<<: *backend
|
|
command: bundle exec rails
|
|
|
|
web:
|
|
<<: *backend
|
|
command: bundle exec rails server -b 0.0.0.0
|
|
ports:
|
|
- '3000:3000'
|
|
depends_on:
|
|
esbuild:
|
|
condition: service_started
|
|
sidekiq:
|
|
condition: service_started
|
|
|
|
sidekiq:
|
|
<<: *backend
|
|
command: bundle exec sidekiq
|
|
|
|
postgres:
|
|
image: postgres:13
|
|
volumes:
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}/.dockerdev/.psqlrc:/root/.psqlrc:ro
|
|
- postgres:/var/lib/postgresql/data
|
|
- history:/usr/local/hist
|
|
environment:
|
|
PSQL_HISTFILE: /usr/local/hist/.psql_history
|
|
POSTGRES_PASSWORD: postgres
|
|
ports:
|
|
- 5432
|
|
healthcheck:
|
|
test: pg_isready -U postgres -h 127.0.0.1
|
|
interval: 5s
|
|
|
|
redis:
|
|
image: redis:7.0-alpine
|
|
volumes:
|
|
- redis:/data
|
|
ports:
|
|
- 6379
|
|
healthcheck:
|
|
test: redis-cli ping
|
|
interval: 1s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
esbuild:
|
|
<<: *app
|
|
command: yarn build --watch
|
|
volumes:
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}:/app:cached
|
|
- bundle:/usr/local/bundle
|
|
- node_modules:/app/node_modules
|
|
- builds:/app/assets/builds
|
|
environment:
|
|
<<: *env
|
|
WEBPACKER_DEV_SERVER_HOST: 0.0.0.0
|
|
YARN_CACHE_FOLDER: /app/node_modules/.yarn-cache
|
|
|
|
chrome:
|
|
image: browserless/chrome:latest
|
|
ports:
|
|
- "3333:3333"
|
|
# Mount application source code to support file uploading
|
|
# (otherwise Chrome won't be able to find files).
|
|
# NOTE: Make sure you use absolute paths in `#attach_file`.
|
|
volumes:
|
|
- ${LOCAL_WORKSPACE_FOLDER:-.}:/app:cached
|
|
environment:
|
|
PORT: 3333
|
|
CONNECTION_TIMEOUT: 600000
|
|
|
|
rspec_system:
|
|
<<: *backend
|
|
depends_on:
|
|
chrome:
|
|
condition: service_started
|
|
|
|
volumes:
|
|
bundle:
|
|
cypress:
|
|
node_modules:
|
|
history:
|
|
rails_cache:
|
|
postgres:
|
|
redis:
|
|
assets:
|
|
builds:
|
|
|