forked from rubyforgood/mutual-aid
-
Notifications
You must be signed in to change notification settings - Fork 1
/
docker-compose.yml
90 lines (83 loc) · 2.46 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
version: "3.4"
x-shared-postgres-environment: &x-shared-postgres-environment
POSTGRES_DB: "${POSTGRES_DB}"
POSTGRES_USER: "${POSTGRES_USER:-postgres}"
# this variable should be set in a .env file or passed via the docker-compose cli
POSTGRES_PASSWORD: "${POSTGRES_PASSWORD}"
x-shared-environment-defaults:
- &RUBYOPT "${RUBYOPT}"
- &APP_PORT "${APP_PORT:-3000}"
- &EMAIL_HTTP_PORT "${EMAIL_HTTP_PORT:-1080}"
- &EMAIL_SMTP_PORT "${EMAIL_SMTP_PORT:-1025}"
- &WEBPACKER_DEV_SERVER_PORT "${WEBPACKER_DEV_SERVER_PORT:-3035}"
x-email-defaults: &x-email-defaults
SMTP_HOST: "${EMAIL_HOST:-email}"
SMTP_PORT: *EMAIL_SMTP_PORT
SMTP_FROM_EMAIL: "${EMAIL_FROM_ADDR:-mutualaid@localhost}"
SYSTEM_HOST_NAME: "${SYSTEM_HOST_NAME:-localhost}"
services:
email:
build:
context: ../..
dockerfile: ./docker/development/email/Dockerfile
command: [ "mailcatcher", "--foreground", "--ip", "0.0.0.0" ]
depends_on:
- db
ports:
- target: 1080
published: *EMAIL_HTTP_PORT
- target: 1025
published: *EMAIL_SMTP_PORT
db:
image: postgres:alpine
environment:
<<: *x-shared-postgres-environment
POSTGRES_HOST_AUTH_METHOD: trust
volumes:
- db:/var/lib/postgresql/data
app:
build:
context: ../..
dockerfile: ./docker/development/app/Dockerfile
target: base
command: [ "bundle", "exec", "rails", "server", "-b", "0.0.0.0" ]
user: "${UID}"
ports:
- target: *APP_PORT
published: *APP_PORT
volumes:
- ../..:/usr/src/app
- gem_cache:/usr/local/bundle/
- node_modules:/usr/src/app/node_modules
depends_on:
- db
environment:
<<: *x-shared-postgres-environment
<<: *x-email-defaults
RAILS_ENV: development
POSTGRES_HOST: db
WEBPACKER_DEV_SERVER_HOST: webpacker
WEBPACKER_DEV_SERVER_PORT: *WEBPACKER_DEV_SERVER_PORT
RUBYOPT: *RUBYOPT
webpacker:
build:
context: ../..
dockerfile: ./docker/development/app/Dockerfile
target: base
user: "${UID}"
command: [ "./bin/webpack-dev-server" ]
volumes:
- ../..:/usr/src/app
- gem_cache:/usr/local/bundle/
- node_modules:/usr/src/app/node_modules
ports:
- target: *WEBPACKER_DEV_SERVER_PORT
published: *WEBPACKER_DEV_SERVER_PORT
environment:
- NODE_ENV=development
- RAILS_ENV=development
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
volumes:
db:
gem_cache:
node_modules: