/ docker-compose.yml
docker-compose.yml
1 version: '3.6' 2 3 x-app: &default-app 4 build: 5 context: "." 6 target: "app" 7 args: 8 - "UID=${UID:-1000}" 9 - "GID=${GID:-1000}" 10 - "FLASK_DEBUG=${FLASK_DEBUG:-false}" 11 - "NODE_ENV=${NODE_ENV:-production}" 12 env_file: 13 - ".env" 14 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 15 stop_grace_period: "3s" 16 tty: true 17 volumes: 18 - "${DOCKER_WEB_VOLUME:-./public:/app/public}" 19 - "../allthethings-worldcat-data:/worldcat/" 20 logging: 21 driver: "local" 22 options: 23 max-size: 10m 24 max-file: "3" 25 compress: "false" 26 mode: "non-blocking" 27 network_mode: "${NETWORK_MODE:-bridge}" 28 29 x-assets: &default-assets 30 build: 31 context: "." 32 target: "assets" 33 args: 34 - "UID=${UID:-1000}" 35 - "GID=${GID:-1000}" 36 - "NODE_ENV=${NODE_ENV:-production}" 37 env_file: 38 - ".env" 39 profiles: ["assets"] 40 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 41 stop_grace_period: "0" 42 tty: true 43 volumes: 44 - ".:/app" 45 46 services: 47 mariadb: 48 container_name: mariadb 49 network_mode: "${NETWORK_MODE:-bridge}" 50 environment: 51 MARIADB_USER: "${MARIADB_USER}" 52 MARIADB_PASSWORD: "${MARIADB_PASSWORD}" 53 MARIADB_ROOT_PASSWORD: "${MARIADB_PASSWORD}" 54 MARIADB_DATABASE: "${MARIADB_DATABASE}" 55 MARIADB_INITDB_SKIP_TZINFO: "1" # https://github.com/MariaDB/mariadb-docker/issues/262#issuecomment-672375238 56 image: "mariadb:10.10.2" 57 profiles: ["mariadb"] 58 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 59 stop_grace_period: "3s" 60 command: "--init-file /etc/mysql/conf.d/init.sql" 61 # entrypoint: mysqld_safe --skip-grant-tables --user=mysql 62 volumes: 63 - "../allthethings-mysql-data:/var/lib/mysql/" 64 - "./mariadb-conf:/etc/mysql/conf.d" 65 ulimits: 66 memlock: 67 soft: -1 68 hard: -1 69 nproc: 65535 70 nofile: 71 soft: 65535 72 hard: 65535 73 logging: 74 driver: "local" 75 76 mariapersist: 77 container_name: mariapersist 78 network_mode: "${NETWORK_MODE:-bridge}" 79 environment: 80 MARIADB_USER: "${MARIAPERSIST_USER}" 81 MARIADB_PASSWORD: "${MARIAPERSIST_PASSWORD}" 82 MARIADB_RANDOM_ROOT_PASSWORD: "1" 83 MARIADB_DATABASE: "${MARIAPERSIST_DATABASE}" 84 MARIADB_INITDB_SKIP_TZINFO: "1" # https://github.com/MariaDB/mariadb-docker/issues/262#issuecomment-672375238 85 image: "mariadb:10.10.2" 86 profiles: ["mariapersist"] 87 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 88 stop_grace_period: "3s" 89 command: "--init-file /etc/mysql/conf.d/init.sql" 90 # command: "--init-file /etc/mysql/conf.d/init.sql --tc-heuristic-recover=ROLLBACK" 91 # entrypoint: mysqld_safe --skip-grant-tables --user=mysql 92 volumes: 93 - "../allthethings-mariapersist-data:/var/lib/mysql/" 94 - "./mariapersist-conf:/etc/mysql/conf.d" 95 ulimits: 96 memlock: 97 soft: -1 98 hard: -1 99 nproc: 65535 100 nofile: 101 soft: 65535 102 hard: 65535 103 logging: 104 driver: "local" 105 106 mariapersistreplica: 107 container_name: mariapersistreplica 108 network_mode: "${NETWORK_MODE:-bridge}" 109 environment: 110 MARIADB_USER: "${MARIAPERSIST_USER}" 111 MARIADB_PASSWORD: "${MARIAPERSIST_PASSWORD}" 112 MARIADB_RANDOM_ROOT_PASSWORD: "1" 113 MARIADB_DATABASE: "${MARIAPERSIST_DATABASE}" 114 MARIADB_INITDB_SKIP_TZINFO: "1" # https://github.com/MariaDB/mariadb-docker/issues/262#issuecomment-672375238 115 image: "mariadb:10.10.2" 116 profiles: ["mariapersistreplica"] 117 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 118 stop_grace_period: "3s" 119 command: "--init-file /etc/mysql/conf.d/init.sql --server_id=${MARIAPERSISTREPLICA_SERVER_ID}" 120 # entrypoint: mysqld_safe --skip-grant-tables --user=mysql 121 volumes: 122 - "../allthethings-mariapersistreplica-data:/var/lib/mysql/" 123 - "./mariapersistreplica-conf:/etc/mysql/conf.d" 124 ulimits: 125 memlock: 126 soft: -1 127 hard: -1 128 nproc: 65535 129 nofile: 130 soft: 65535 131 hard: 65535 132 logging: 133 driver: "local" 134 135 mariabackup: 136 container_name: mariabackup 137 image: woolfg/mysql-backup-sidecar:sha-fb85d88-mariadb-10.9 138 network_mode: "${NETWORK_MODE:-bridge}" 139 environment: 140 MYSQL_HOST: "${MARIABACKUP_HOST}" 141 MYSQL_PORT: "${MARIABACKUP_PORT}" 142 MYSQL_USER: "${MARIABACKUP_USER}" 143 MYSQL_PASSWORD: "${MARIABACKUP_PASSWORD}" 144 profiles: ["mariabackup"] 145 restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 146 stop_grace_period: "3s" 147 volumes: 148 - "../allthethings-mariapersistreplica-data:/var/lib/mysql/" 149 - "../allthethings-mariabackup-data:/backup" 150 ulimits: 151 memlock: 152 soft: -1 153 hard: -1 154 nproc: 65535 155 nofile: 156 soft: 65535 157 hard: 65535 158 logging: 159 driver: "local" 160 161 # redis: 162 # container_name: redis 163 # network_mode: "${NETWORK_MODE:-bridge}" 164 # deploy: 165 # resources: 166 # limits: 167 # cpus: "${DOCKER_REDIS_CPUS:-0}" 168 # memory: "${DOCKER_REDIS_MEMORY:-0}" 169 # image: "redis:7.0.5-bullseye" 170 # profiles: ["redis"] 171 # restart: "${DOCKER_RESTART_POLICY:-unless-stopped}" 172 # stop_grace_period: "3s" 173 # volumes: 174 # - "redis:/data" 175 176 web: 177 <<: *default-app 178 container_name: web 179 healthcheck: 180 test: "${DOCKER_WEB_HEALTHCHECK_TEST:-curl localhost:8000/dyn/up/}" 181 interval: "60s" 182 timeout: "3s" 183 start_period: "5s" 184 retries: 3 185 profiles: ["web"] 186 187 # worker: 188 # <<: *default-app 189 # container_name: worker 190 # network_mode: "${NETWORK_MODE:-bridge}" 191 # command: celery -A "allthethings.app.celery_app" worker -l "${CELERY_LOG_LEVEL:-info}" 192 # entrypoint: [] 193 # deploy: 194 # resources: 195 # limits: 196 # cpus: "${DOCKER_WORKER_CPUS:-0}" 197 # memory: "${DOCKER_WORKER_MEMORY:-0}" 198 # profiles: ["worker"] 199 200 js: 201 <<: *default-assets 202 container_name: js 203 command: "../run yarn:build:js" 204 205 css: 206 <<: *default-assets 207 container_name: css 208 command: "../run yarn:build:css" 209 210 elasticsearch: 211 container_name: elasticsearch 212 network_mode: "${NETWORK_MODE:-bridge}" 213 build: 214 context: . 215 dockerfile: Dockerfile-elasticsearch 216 environment: 217 - "ES_PORT=9200" 218 - "ES_SETTING_TRANSPORT_PORT=9300" 219 - "ES_SETTING_DISCOVERY_TYPE=single-node" 220 - "ES_SETTING_BOOTSTRAP_MEMORY__LOCK=true" 221 - "ES_JAVA_OPTS=-Xms8g -Xmx8g" 222 - "ES_SETTING_XPACK_SECURITY_ENABLED=false" 223 cap_add: 224 - IPC_LOCK 225 ulimits: 226 memlock: 227 soft: -1 228 hard: -1 229 nproc: 65535 230 nofile: 231 soft: 65535 232 hard: 65535 233 restart: unless-stopped 234 profiles: ["elasticsearch"] 235 volumes: 236 - "../allthethings-elastic-data:/usr/share/elasticsearch/data" 237 logging: 238 driver: "local" 239 240 elasticsearchaux: 241 container_name: elasticsearchaux 242 network_mode: "${NETWORK_MODE:-bridge}" 243 build: 244 context: . 245 dockerfile: Dockerfile-elasticsearch 246 environment: 247 - "ES_PORT=9201" 248 - "ES_SETTING_HTTP_PORT=9201" 249 - "ES_SETTING_TRANSPORT_PORT=9301" 250 - "ES_SETTING_DISCOVERY_TYPE=single-node" 251 - "ES_SETTING_BOOTSTRAP_MEMORY__LOCK=true" 252 - "ES_JAVA_OPTS=-Xms8g -Xmx8g" 253 - "ES_SETTING_XPACK_SECURITY_ENABLED=false" 254 cap_add: 255 - IPC_LOCK 256 ulimits: 257 memlock: 258 soft: -1 259 hard: -1 260 nproc: 65535 261 nofile: 262 soft: 65535 263 hard: 65535 264 restart: unless-stopped 265 profiles: ["elasticsearchaux"] 266 volumes: 267 - "../allthethings-elasticsearchaux-data:/usr/share/elasticsearch/data" 268 logging: 269 driver: "local" 270 271 kibana: 272 container_name: kibana 273 network_mode: "${NETWORK_MODE:-bridge}" 274 image: docker.elastic.co/kibana/kibana:8.5.2 275 environment: 276 ELASTICSEARCH_HOSTS: '["http://elasticsearch:9200"]' 277 restart: unless-stopped 278 depends_on: 279 - "elasticsearch" 280 profiles: ["kibana"] 281 logging: 282 driver: "local" 283 284 mailpit: 285 container_name: 'mailpit' 286 image: 'axllent/mailpit' 287 network_mode: "${NETWORK_MODE:-bridge}" 288 restart: unless-stopped 289 profiles: ["mailpit"] 290 logging: 291 driver: "local"