forked from HEIG-VD/template-tb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathannexes.tex
135 lines (118 loc) · 4.17 KB
/
annexes.tex
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
133
134
135
\chapter{Déploiement}
\label{annexe-deploiement}
Cette annexe contient les fichiers de déploiement utilisés pour l'application \gls{beeplace}.
Ci-dessous, le \texttt{Dockerfile} du frontend de l'application \gls{beeplace}. Le fichier du backend est omis car il est identique, à l'exception du port et des variables d'environnement utilisés.
\begin{minted}[linenos]{sh}
# Base image
FROM node:20-alpine
# Work directory
WORKDIR /app
# Copy the files of the working directory
COPY .bundle .
# Environment variables
ENV NODE_ENV=production
ENV BACKEND_URL=${BACKEND_URL}
ENV DISPLAY_WIDTH=${DISPLAY_WIDTH}
ENV DISPLAY_HEIGHT=${DISPLAY_HEIGHT}
ENV DISPLAY_COLUMNS=${DISPLAY_COLUMNS}
ENV DISPLAY_ROWS=${DISPLAY_ROWS}
ENV MIN_SCALE=${MIN_SCALE}
ENV MAX_SCALE=${MAX_SCALE}
# Exposed ports
EXPOSE 3000
# Command to run on start
CMD ["npm", "start"]
\end{minted}
\begin{center}
\textit{Dockerfile}
\end{center}
\pagebreak
Fichier \texttt{docker-compose.yml} utilisé lors du déploiement pour configurer les quatre services de l'application \gls{beeplace}: le frontend, le backend, Redis et la base de données PostgreSQL.
\begin{minted}[linenos]{yaml}
networks:
traefik_network:
name: traefik_network
driver_opts:
com.docker.network.bridge.name: traefik_network
services:
backend:
container_name: beeplace-backend
# {...} is replacing "/beescreens/beescreens/" to make URL shorter
image: registry.gitlab.com{...}beeplace-backend:${BEEPLACE_BACKEND_IMAGE_VERSION:-latest}
restart: unless-stopped
env_file:
- backend.env
networks:
- traefik_network
expose:
- 4000
labels:
- traefik.enable=true
- traefik.docker.network=traefik_network
#
- traefik.http.routers.beeplace-backend-web.rule=Host(`${BEEPLACE_BACKEND_FQDN}`)
- traefik.http.routers.beeplace-backend-web.entrypoints=web
- traefik.http.routers.beeplace-backend-web.middlewares=redirect-to-https
#
- traefik.http.routers.beeplace-backend-websecure.rule=Host(`${BEEPLACE_BACKEND_FQDN}`)
- traefik.http.routers.beeplace-backend-websecure.entrypoints=websecure
- traefik.http.routers.beeplace-backend-websecure.tls=true
- traefik.http.routers.beeplace-backend-websecure.tls.certresolver=letsencrypt
#
- traefik.http.services.beeplace-backend.loadbalancer.server.port=4000
frontend:
container_name: beeplace-frontend
# {...} is replacing "/beescreens/beescreens/" to make URL shorter
image: registry.gitlab.com{...}beeplace-frontend:${BEEPLACE_FRONTEND_IMAGE_VERSION:-latest}
restart: unless-stopped
env_file:
- frontend.env
networks:
- traefik_network
expose:
- 3000
labels:
- traefik.enable=true
- traefik.docker.network=traefik_network
#
- traefik.http.routers.beeplace-frontend-web.rule=Host(`${BEEPLACE_FRONTEND_FQDN}`)
- traefik.http.routers.beeplace-frontend-web.entrypoints=web
- traefik.http.routers.beeplace-frontend-web.middlewares=redirect-to-https
#
- traefik.http.routers.beeplace-frontend-websecure.rule=Host(`${BEEPLACE_FRONTEND_FQDN}`)
- traefik.http.routers.beeplace-frontend-websecure.entrypoints=websecure
- traefik.http.routers.beeplace-frontend-websecure.tls=true
- traefik.http.routers.beeplace-frontend-websecure.tls.certresolver=letsencrypt
#
- traefik.http.services.beeplace-frontend.loadbalancer.server.port=3000
beeplace-redis:
container_name: beeplace-redis
image: redis:${REDIS_IMAGE_VERSION:-latest}
restart: unless-stopped
networks:
- traefik_network
ports:
- 6379:6379
volumes:
- ./db-data:/redis/data
database:
container_name: beeplace-database
image: postgres:${POSTGRES_IMAGE_VERSION:-latest}
restart: unless-stopped
env_file:
- postgres.env
networks:
- traefik_network
ports:
- 5432:5432
volumes:
- ./db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
interval: 30s
timeout: 20s
retries: 3
\end{minted}
\begin{center}
\textit{docker-compose.yml}
\end{center}