Skip to content

Commit 15a6b8b

Browse files
committed
docker stack pipeline
1 parent 92a2b9c commit 15a6b8b

File tree

2 files changed

+61
-8
lines changed

2 files changed

+61
-8
lines changed

.github/workflows/pipeline.yaml

+17
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,20 @@ jobs:
4444
tags: |
4545
ghcr.io/dreamsofcode-io/zenstats:latest
4646
ghcr.io/dreamsofcode-io/zenstats:${{ github.sha }}
47+
48+
deploy:
49+
runs-on: ubuntu-latest
50+
needs:
51+
- build-and-push-image
52+
steps:
53+
- name: Checkout code
54+
uses: actions/checkout@v2
55+
56+
- name: Docker Stack Deploy
57+
uses: cssnr/stack-deploy-action@v1
58+
with:
59+
name: zenfulstats
60+
file: docker-stack.yaml
61+
host: zenful.site
62+
user: deploy
63+
ssh_key: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }}

docker-stack.yaml

+44-8
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,49 @@
11
services:
2+
traefik:
3+
image: traefik:v3.1
4+
command:
5+
- "--providers.docker"
6+
- "--providers.docker.exposedbydefault=false"
7+
- "--entryPoints.websecure.address=:443"
8+
- "--certificatesresolvers.myresolver.acme.tlschallenge=true"
9+
- "--certificatesresolvers.myresolver.acme.email=elliott@zenful.site"
10+
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
11+
- "--entrypoints.web.address=:80"
12+
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
13+
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
14+
ports:
15+
- mode: host
16+
protocol: tcp
17+
published: 80
18+
target: 80
19+
- mode: host
20+
protocol: tcp
21+
published: 443
22+
target: 443
23+
volumes:
24+
- letsencrypt:/letsencrypt
25+
- /var/run/docker.sock:/var/run/docker.sock
226

327
web:
4-
image: ghcr.io/dreamsofcode-io/zenstats:cc5d97c1d8abc3c63862ca699156cca8ab062c29
28+
image: ghcr.io/dreamsofcode-io/zenstats:baaf221054f44ec2b6d85f60e94b70a0619665be
29+
labels:
30+
- "traefik.enable=true"
31+
- "traefik.http.services.web.loadbalancer.server.port=8080"
32+
- "traefik.http.routers.web.rule=Host(`zenful.site`)"
33+
- "traefik.http.routers.web.entrypoints=websecure"
34+
- "traefik.http.routers.web.tls.certresolver=myresolver"
35+
secrets:
36+
- db-password
537
environment:
638
- POSTGRES_HOST=db
7-
- POSTGRES_PASSWORD=mysecretpassword
39+
- POSTGRES_PASSWORD_FILE=/run/secrets/db-password
840
- POSTGRES_USER=postgres
941
- POSTGRES_DB=app
1042
- POSTGRES_PORT=5432
1143
- POSTGRES_SSLMODE=disable
12-
ports:
13-
- mode: "host"
14-
protocol: "tcp"
15-
published: 80
16-
target: 8080
44+
deploy:
45+
update_config:
46+
order: start-first
1747
depends_on:
1848
- db
1949

@@ -22,9 +52,11 @@ services:
2252
user: postgres
2353
volumes:
2454
- db-data:/var/lib/postgresql/data
55+
secrets:
56+
- db-password
2557
environment:
2658
- POSTGRES_DB=app
27-
- POSTGRES_PASSWORD=mysecretpassword
59+
- POSTGRES_PASSWORD_FILE=/run/secrets/db-password
2860
healthcheck:
2961
test: [ "CMD", "pg_isready" ]
3062
interval: 10s
@@ -34,3 +66,7 @@ services:
3466
volumes:
3567
db-data:
3668
letsencrypt:
69+
70+
secrets:
71+
db-password:
72+
external: true

0 commit comments

Comments
 (0)