forked from hedgedoc/container
-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
132 lines (125 loc) · 4.03 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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Using version 3 to provide play-with-docker badge
# You can change to version 2 without breaking.
#version: '2'
version: '3.4'
x-logging:
&default-logging
options:
max-size: '12m'
max-file: '5'
driver: json-file
services:
database:
# Don't upgrade PostgreSQL by simply changing the version number
# You need to migrate the Database to the new PostgreSQL version
image: postgres:9.6-alpine
#mem_limit: 256mb # version 2 only
#memswap_limit: 512mb # version 2 only
#read_only: true # not supported in swarm mode please enable along with tmpfs
#tmpfs:
# - /run/postgresql:size=512K
# - /tmp:size=256K
environment:
- POSTGRES_USER=hackmd
- POSTGRES_PASSWORD=hackmdpass
- POSTGRES_DB=hackmd
volumes:
- database:/var/lib/postgresql/data
networks:
backend:
restart: always
# MySQL example
# Most of the documentation that applies to PostgreSQL applies also to MySQL
#database:
# # You should be able to upgrade MySQL without problems
# # but to make sure no even when a problem appears you
# # should have a backup
# image: mariadb:10
# environment:
# - MYSQL_USER=hackmd
# - MYSQL_PASSWORD=hackmdpass
# - MYSQL_DATABASE=hackmd
# - MYSQL_ALLOW_EMPTY_PASSWORD=true
# volumes:
# - database:/var/lib/mysql
# # This config provides UTF-8 support to the database by default
# # If this config is not used, HackMD breaks as it tries to write
# # UTF-8 to a latin database.
# - ./resources/utf8.cnf:/etc/mysql/conf.d/utf8.cnf
# networks:
# backend:
# restart: always
app:
# Uncomment the following section to build the image yourself:
#build:
# context: .
# dockerfile: debian/Dockerfile
# args:
# - "VERSION=master"
# - "CODIMD_REPOSITORY=https://github.com/hackmdio/codimd.git"
image: hackmdio/hackmd:1.2.1
#mem_limit: 256mb # version 2 only
#memswap_limit: 512mb # version 2 only
#read_only: true # not supported in swarm mode, enable along with tmpfs
#tmpfs:
# - /tmp:size=512K
# - /hackmd/tmp:size=1M
# # Make sure you remove this when you use filesystem as upload type
# - /hackmd/public/uploads:size=10M
environment:
# DB_URL is formatted like: <databasetype>://<username>:<password>@<hostname>/<database>
# Other examples are:
# - mysql://hackmd:hackmdpass@database:3306/hackmd
# - sqlite:///data/sqlite.db (NOT RECOMMENDED)
# - For details see the official sequelize docs: http://docs.sequelizejs.com/en/v3/
- CMD_DB_URL=postgres://hackmd:hackmdpass@database:5432/hackmd
- CMD_IMAGE_UPLOAD_TYPE=filesystem
- CMD_USECDN=true
#ports:
# Ports that are published to the outside.
# The latter port is the port inside the container. It should always stay on 3000
# If you only specify a port it'll published on all interfaces. If you want to use a
# local reverse proxy, you may want to listen on 127.0.0.1.
# Example:
# - "127.0.0.1:3000:3000"
#- "3000:3000"
networks:
backend:
restart: always
depends_on:
- database
volumes:
- uploads:/codimd/public/uploads
logging: *default-logging
nginx:
image: nginx:alpine
ports:
- "3000:443"
networks:
backend:
restart: always
depends_on:
- app
volumes:
- ./resources/nginx.conf:/etc/nginx/conf.d/default.conf:ro
secrets:
- ssl.cert
- ssl.key
- dhparam.pem
logging: *default-logging
# Define networks to allow best isolation
networks:
# Internal network for communication with PostgreSQL/MySQL
backend:
# Define named volumes so data stays in place
volumes:
# Volume for PostgreSQL/MySQL database
database:
uploads:
secrets:
ssl.cert:
file: /usr/local/ssl/sidefeed.com/sidefeed.com.chained.cert
ssl.key:
file: /usr/local/ssl/sidefeed.com/sidefeed.com.key
dhparam.pem:
file: /usr/local/ssl/sidefeed.com/dhparam.pem