forked from FriendsOfShopware/shopmon
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompose.deploy.yml
More file actions
111 lines (101 loc) · 3.88 KB
/
compose.deploy.yml
File metadata and controls
111 lines (101 loc) · 3.88 KB
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
x-env: &env
MAIL_FROM: "Shopmon <noreply@fos.gg>"
APP_FILES_DIR: /app/uploads
APP_DATABASE_PATH: /app/db/shopmon.db
APP_OAUTH_GITHUB_CLIENT_ID: ${APP_OAUTH_GITHUB_CLIENT_ID}
APP_OAUTH_GITHUB_CLIENT_SECRET: ${APP_OAUTH_GITHUB_CLIENT_SECRET}
# From 1password
FRONTEND_URL: ${FRONTEND_URL}
APP_SECRET: ${APP_SECRET}
SMTP_HOST: ${SMTP_HOST}
SMTP_PORT: ${SMTP_PORT}
SMTP_SECURE: ${SMTP_SECURE}
SMTP_USER: ${SMTP_USER}
SMTP_PASS: ${SMTP_PASS}
SMTP_REPLY_TO: ${SMTP_REPLY_TO}
APP_SITESPEED_ENDPOINT: http://sitespeed:3001
SENTRY_ENVIRONMENT: ${SENTRY_ENVIRONMENT}
SENTRY_DSN: ${SENTRY_DSN}
services:
migrate:
image: ghcr.io/friendsofshopware/shopmon/api:${ENVIRONMENT}
environment:
<<: *env
command: "migrate.ts"
volumes:
- db:/app/db
- uploads:/app/uploads
frontend:
image: ghcr.io/friendsofshopware/shopmon/frontend:${ENVIRONMENT}
labels:
- traefik.enable=true
- traefik.http.routers.shopmon-${ENVIRONMENT}.entrypoints=websecure
- traefik.http.routers.shopmon-${ENVIRONMENT}.rule=Host(`${APP_DOMAIN}`)
- traefik.http.routers.shopmon-${ENVIRONMENT}.tls=true
- traefik.http.routers.shopmon-${ENVIRONMENT}.tls.certresolver=cloudflare
- traefik.http.routers.shopmon-${ENVIRONMENT}.tls.domains[0].main=fos.gg
- traefik.http.routers.shopmon-${ENVIRONMENT}.tls.domains[0].sans=*.fos.gg
- traefik.http.middlewares.shopmon-${ENVIRONMENT}.compress=true
- traefik.http.middlewares.shopmon-${ENVIRONMENT}.compress.encodings=zstd,gzip
- traefik.http.routers.shopmon-${ENVIRONMENT}.middlewares=shopmon-${ENVIRONMENT}
api:
image: ghcr.io/friendsofshopware/shopmon/api:${ENVIRONMENT}
depends_on:
migrate:
condition: service_completed_successfully
environment:
<<: *env
labels:
- traefik.enable=true
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.entrypoints=websecure
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.rule=Host(`${APP_DOMAIN}`) && (PathPrefix(`/trpc`) || PathPrefix(`/auth`) || PathPrefix(`/sitespeed`))
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.tls=true
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.tls.certresolver=cloudflare
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.tls.domains[0].main=fos.gg
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.tls.domains[0].sans=*.fos.gg
- traefik.http.middlewares.shopmon-api-${ENVIRONMENT}.compress=true
- traefik.http.middlewares.shopmon-api-${ENVIRONMENT}.compress.encodings=zstd,gzip
- traefik.http.routers.shopmon-api-${ENVIRONMENT}.middlewares=shopmon-api-${ENVIRONMENT}
volumes:
- db:/app/db
- uploads:/app/api/files
sitespeed:
image: ghcr.io/friendsofshopware/shopmon/sitespeed:${ENVIRONMENT}
environment:
APP_SITESPEED_DATA_FOLDER: /app/uploads/sitespeed
volumes:
- uploads:/app/uploads
backup:
image: litestream/litestream
volumes:
- db:/data
command: ["replicate", "--config", "/etc/litestream.yml"]
configs:
- source: litestream
target: /etc/litestream.yml
environment:
LITESTREAM_ACCESS_KEY_ID: ${LITESTREAM_ACCESS_KEY_ID}
LITESTREAM_SECRET_ACCESS_KEY: ${LITESTREAM_SECRET_ACCESS_KEY}
LITESTREAM_AGE_PUBLIC_KEY: ${LITESTREAM_AGE_PUBLIC_KEY}
LITESTREAM_AGE_PRIVATE_KEY: ${LITESTREAM_AGE_PRIVATE_KEY}
ENVIRONMENT: ${ENVIRONMENT}
volumes:
db:
uploads:
configs:
litestream:
content: |
addr: ":9090"
dbs:
- path: /data/shopmon.db
replicas:
- type: s3
bucket: shopmon-backups
path: db-enc/$ENVIRONMENT/
endpoint: s3.eu-central-003.backblazeb2.com
force-path-style: true
age:
identities:
- $LITESTREAM_AGE_PRIVATE_KEY
recipients:
- $LITESTREAM_AGE_PUBLIC_KEY