2019-12-02 04:14:00 +01:00
|
|
|
version: '3.1'
|
|
|
|
services:
|
|
|
|
mysql:
|
|
|
|
image: "mysql:5.7"
|
|
|
|
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
|
|
|
|
restart: always
|
|
|
|
environment:
|
|
|
|
MYSQL_RANDOM_ROOT_PASSWORD: "true"
|
|
|
|
expose:
|
|
|
|
- "3306"
|
|
|
|
labels:
|
|
|
|
- traefik.enable=false
|
|
|
|
volumes:
|
|
|
|
- ./docker:/docker-entrypoint-initdb.d:ro
|
|
|
|
- ./data/mysql:/var/lib/mysql:rw
|
|
|
|
|
|
|
|
redis:
|
|
|
|
image: redis
|
|
|
|
healthcheck:
|
|
|
|
test: ["CMD", "redis-cli","ping"]
|
|
|
|
interval: 30s
|
|
|
|
timeout: 10s
|
|
|
|
retries: 3
|
|
|
|
labels:
|
|
|
|
- traefik.enable=false
|
|
|
|
|
|
|
|
traefik:
|
|
|
|
image: "traefik:v2.0.0"
|
|
|
|
command:
|
|
|
|
- --providers.docker=true
|
2019-12-02 07:25:06 +01:00
|
|
|
#- --providers.docker.exposedbydefault=false
|
|
|
|
#- --docker.domain=ryan.lokinet.org
|
|
|
|
- --entrypoints.http.address=:80
|
|
|
|
- --entrypoints.https.address=:443
|
|
|
|
#- --entrypoints.http.redirect.entryPoint=https
|
|
|
|
#- --acme.domains.main=ryan.lokinet.org
|
|
|
|
- --certificatesResolvers.myhttpchal.acme.email=${EMAIL?Variable EMAIL not set}
|
|
|
|
- --certificatesResolvers.myhttpchal.acme.storage=acme.json
|
|
|
|
- --certificatesResolvers.myhttpchal.acme.httpChallenge=true
|
|
|
|
- --certificatesResolvers.myhttpchal.acme.httpChallenge.entryPoint=http
|
|
|
|
- --accessLog
|
|
|
|
#- --http.routers.https-redirect.rules=HostRegexp(`{any:.*}`)
|
|
|
|
#- --http.routers.https-redirect.rules.middlewares=["https-redirect"]
|
|
|
|
#- --http.middlewares.https-redirect.redirectscheme.scheme=https
|
|
|
|
#- --debug=true
|
|
|
|
#- --retry
|
|
|
|
#- --api.insecure # Don't do that in production
|
2019-12-02 04:14:00 +01:00
|
|
|
ports:
|
|
|
|
- "80:80"
|
|
|
|
- "443:443"
|
|
|
|
# dev hack, remove for production...
|
|
|
|
#- "81:8080"
|
|
|
|
volumes:
|
|
|
|
- "/var/run/docker.sock:/var/run/docker.sock:ro"
|
2019-12-02 07:25:06 +01:00
|
|
|
- ./docker/acme.json:/acme.json
|
|
|
|
labels:
|
|
|
|
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
|
|
|
|
- traefik.http.routers.redirs.rule=hostregexp(`{host:.+}`)
|
|
|
|
- traefik.http.routers.redirs.entrypoints=http
|
|
|
|
- traefik.http.routers.redirs.middlewares=redirect-to-https
|
2019-12-02 04:14:00 +01:00
|
|
|
|
|
|
|
nodepomf:
|
|
|
|
build:
|
|
|
|
context: https://github.com/odilitime/nodepomf.git
|
|
|
|
expose:
|
|
|
|
- "3000"
|
|
|
|
environment:
|
|
|
|
NPOMF_DB_FILENAME: ./databases/pomf_files.db
|
|
|
|
NPOMF_MAX_UPLOAD_SIZE: 1000000 # 10mb
|
|
|
|
NPOMF_FILE_URL: "/f"
|
|
|
|
labels:
|
|
|
|
- traefik.enable=true
|
2019-12-02 07:25:06 +01:00
|
|
|
- traefik.http.routers.nodepomf.tls.certResolver=myhttpchal
|
|
|
|
- traefik.http.routers.nodepomf.rule=Host(`${DOMAIN?Variable DOMAIN not set}`) && PathPrefix(`/f`)
|
2019-12-02 04:14:00 +01:00
|
|
|
volumes:
|
|
|
|
- ./data/files:/usr/src/app/files:rw
|
|
|
|
- ./data/pomfdb:/usr/src/app/databases:rw
|
|
|
|
|
|
|
|
platform:
|
|
|
|
build: server
|
|
|
|
depends_on:
|
|
|
|
- mysql
|
|
|
|
- redis
|
|
|
|
- nodepomf
|
|
|
|
#expose:
|
|
|
|
# - "7070"
|
|
|
|
# - "3000"
|
|
|
|
ports:
|
|
|
|
- "7070"
|
|
|
|
- "3000"
|
|
|
|
environment:
|
|
|
|
stream__host: redis
|
|
|
|
web__listen: platform
|
|
|
|
admin__listen: platform
|
|
|
|
admin__modKey: enableAdmin
|
|
|
|
database__default__type: mysql
|
|
|
|
database__default__options__database: lmpc_platform
|
|
|
|
database__default__options__host: mysql
|
|
|
|
database__default__options__username: platform
|
|
|
|
database__default__options__password: publicchat_test
|
|
|
|
pomf__provider: "nodepomf"
|
|
|
|
pomf__provider_url: "http://nodepomf/upload"
|
|
|
|
VIRTUAL_PORT: 7070
|
|
|
|
VIRTUAL_HOST: platform.local
|
|
|
|
labels:
|
|
|
|
- traefik.enable=true
|
2019-12-02 07:25:06 +01:00
|
|
|
- traefik.http.routers.platform.tls.certResolver=myhttpchal
|
|
|
|
- traefik.http.routers.platform.rule=Host(`${DOMAIN?Variable DOMAIN not set}`)
|
2019-12-02 04:14:00 +01:00
|
|
|
- traefik.http.services.platform.loadbalancer.server.port=7070
|
2019-12-02 07:25:06 +01:00
|
|
|
volumes:
|
|
|
|
- ./docker:/usr/src/app/docker:ro
|
|
|
|
command: ["./docker/wait-for-it/wait-for-it.sh", "mysql:3306", "--", "pm2-runtime", "app.js"]
|
2019-12-02 04:14:00 +01:00
|
|
|
|
|
|
|
overlay:
|
|
|
|
build: .
|
|
|
|
depends_on:
|
|
|
|
- mysql
|
|
|
|
- platform
|
|
|
|
ports:
|
|
|
|
- "8080"
|
|
|
|
environment:
|
|
|
|
MYSQL_INIT_DB: publicchat_test
|
|
|
|
VIRTUAL_PORT: 8080
|
|
|
|
web__listen: platform
|
|
|
|
admin__listen: platform
|
|
|
|
admin__modKey: enableAdmin
|
|
|
|
database__default__type: mysql
|
|
|
|
database__default__options__database: lmpc_overlay
|
|
|
|
database__default__options__host: mysql
|
|
|
|
database__default__options__username: overlay
|
|
|
|
database__default__options__password: publicchat_test
|
|
|
|
api__url: http://platform:7070/
|
|
|
|
admin__url: http://platform:3000/
|
|
|
|
labels:
|
|
|
|
- traefik.enable=true
|
2019-12-02 07:25:06 +01:00
|
|
|
- traefik.http.routers.overlay.tls.certResolver=myhttpchal
|
|
|
|
- traefik.http.routers.overlay.rule=Host(`${DOMAIN?Variable DOMAIN not set}`) && PathPrefix(`/loki`)
|
2019-12-02 04:14:00 +01:00
|
|
|
- traefik.http.services.overlay.loadbalancer.server.port=8080
|
2019-12-02 07:25:06 +01:00
|
|
|
volumes:
|
|
|
|
- ./docker:/usr/src/app/docker:ro
|
|
|
|
command: ["./docker/wait-for-it/wait-for-it.sh", "mysql:3306", "--", "pm2-runtime", "overlay_server.js"]
|