feat(infra): reworked everything so that a single docker builds all + made sure everything works

This commit is contained in:
Maieul BOYER 2025-07-29 14:01:01 +02:00
parent 68f8d87477
commit 157b06ea4b
7 changed files with 23 additions and 14 deletions

View file

@ -28,11 +28,7 @@ services:
# - write icons to shared volume allowing nginx to serve them (does it better than if we did it in the service)
icons:
# build is a bit strange: it has two parts
build:
# the dockerfile to use
dockerfile: ./src/icons/Dockerfile
# the current working directory. This means `.` in Dockerfile
context: .
build: ./src/icons/
container_name: icons
restart: always
networks:

View file

@ -6,7 +6,7 @@
# By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/06/12 16:42:38 by maiboyer #+# #+# #
# Updated: 2025/06/16 21:21:16 by maiboyer ### ########.fr #
# Updated: 2025/07/29 13:58:39 by maiboyer ### ########.fr #
# #
# **************************************************************************** #
@ -22,6 +22,8 @@ RUN \
-keyout /etc/ssl/private/nginx-selfsigned.key \
-out /etc/ssl/certs/nginx-selfsigned.crt \
-subj "/C=FR/OU=student/CN=${NGINX_DOMAIN}"
COPY ./15-local-resolvers.envsh /docker-entrypoint.d/
COPY ./17-add-template-prefix.sh /docker-entrypoint.d/
COPY ./conf /etc/nginx/templates

View file

@ -18,8 +18,8 @@ server {
charset UTF-8;
listen [::]:443 ssl;
listen 443 ssl;
server_name $NGINX_DOMAIN;
resolver $NGINX_RESOLVERS;
server_name $NGINX_DOMAIN;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

View file

@ -1,8 +1,10 @@
#forward the post request to the microservice
location /api/icons/set/ {
rewrite ^/api/icons/set/(.*) $1 break;
proxy_pass http://icons-service/set/$uri;
proxy_pass http://icons/set/$uri;
}
#handle the get request with nginx, since it does this well
location /api/icons/get/ {
rewrite ^/api/icons/get/(.*) /$1 break;
root /volumes/icons;

View file

@ -6,18 +6,21 @@
# By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/07/28 16:33:09 by maiboyer #+# #+# #
# Updated: 2025/07/28 17:46:49 by maiboyer ### ########.fr #
# Updated: 2025/07/29 13:54:54 by maiboyer ### ########.fr #
# #
# **************************************************************************** #
# this file will be used to build everything at once
# then all the other Dockerfiles will just copy from this one...
#
# it'll always be tagged as `ft_transcendance_global`
# it'll always be tagged as `trans_builder`
# this is VERY UGLY
# I didn't find really a lot of other ways to do this thought...
# so yeah have mercy :P
# please do not touch this file unless you know what you are doing :)
FROM node:24-alpine
RUN apk add python3;

View file

@ -6,11 +6,13 @@
# By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/06/16 14:57:11 by maiboyer #+# #+# #
# Updated: 2025/07/28 17:59:09 by maiboyer ### ########.fr #
# Updated: 2025/07/29 13:53:21 by maiboyer ### ########.fr #
# #
# **************************************************************************** #
FROM trans_builder
CMD ["node", "/src/icons/run.js"]
# do extra stuff that is specific for this service here !
CMD ["node", "/src/icons/dist/run.js"]

View file

@ -21,6 +21,10 @@ const example: FastifyPluginAsync = async (fastify, opts): Promise<void> => {
}
const image_store: string = fastify.getDecorator('image_store')
const image_path = join(image_store, userid)
//let raw_image_file = await open(image_path + ".raw", "w", 0o666)
//await raw_image_file.write(request.rawBody as Buffer);
//await raw_image_file.close()
try {
let img = sharp(request.rawBody as Buffer);
img.resize({