update: scaffolding for nginx

This commit is contained in:
maix0 2025-06-12 18:35:04 +02:00
parent d89dd4f315
commit fb48a0fa04
7 changed files with 163 additions and 24 deletions

View file

@ -6,9 +6,28 @@
# By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ # # By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2025/06/11 18:10:26 by maiboyer #+# #+# # # Created: 2025/06/11 18:10:26 by maiboyer #+# #+# #
# Updated: 2025/06/11 18:10:38 by maiboyer ### ########.fr # # Updated: 2025/06/12 18:29:29 by maiboyer ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
all: all:
echo "yes" docker compose build
docker compose up
re:
$(MAKE) -f ./Docker.mk clean
$(MAKE) -f ./Docker.mk all
clean:
docker compose down
prune: clean
-if ! [ -z $(shell docker ps -a -q) ] ; then \
docker stop $(shell docker ps -a -q); \
docker rm $(shell docker ps -a -q); \
fi
-docker image prune -a
-docker volume prune
-docker network prune
-docker system prune -a

View file

@ -6,7 +6,7 @@
# By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ # # By: rparodi <rparodi@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ # # +#+#+#+#+#+ +#+ #
# Created: 2023/11/12 11:05:05 by rparodi #+# #+# # # Created: 2023/11/12 11:05:05 by rparodi #+# #+# #
# Updated: 2025/06/11 18:46:40 by maiboyer ### ########.fr # # Updated: 2025/06/12 18:34:44 by maiboyer ### ########.fr #
# # # #
# **************************************************************************** # # **************************************************************************** #
@ -18,11 +18,13 @@ NAME=webserv
# Colors # Colors
GREEN = \033[32m GREEN = \033[32m
BLACK = \033[30m
CYAN = \033[36m CYAN = \033[36m
GREY = \033[0;90m GREY = \033[0;90m
RED = \033[0;31m RED = \033[0;31m
GOLD = \033[38;5;220m GOLD = \033[38;5;220m
BROWN = \033[38;2;100;65;23m BROWN = \033[38;2;100;65;23m
WHITE = \033[38;2;255;255;255m
END = \033[0m END = \033[0m
BOLD = \033[1m BOLD = \033[1m
ITALIC = \033[3m ITALIC = \033[3m
@ -31,19 +33,24 @@ UNDERLINE = \033[4m
BASE_PATH=$(shell realpath .) BASE_PATH=$(shell realpath .)
ECHO = /usr/bin/env echo ECHO = /usr/bin/env echo
PMAKE =
ifndef PMAKE_DISABLE
ifeq ($(shell uname), Linux)
PMAKE = -j$(shell grep -c ^processor /proc/cpuinfo)
endif
ifeq ($(shell uname), Darwin)
PMAKE = -j$(shell sysctl -n hw.ncpu)
endif
endif
all: all:
@$(MAKE) --no-print-directory header @$(MAKE) --no-print-directory header
@$(MAKE) --no-print-directory -f ./Docker.mk $(PMAKE) @$(MAKE) --no-print-directory -f ./Docker.mk
@$(MAKE) --no-print-directory footer
down:
@$(MAKE) --no-print-directory header
@$(MAKE) --no-print-directory -f ./Docker.mk down
@$(MAKE) --no-print-directory footer
clean:
@$(MAKE) --no-print-directory header
@$(MAKE) --no-print-directory -f ./Docker.mk clean
@$(MAKE) --no-print-directory footer
prune:
@$(MAKE) --no-print-directory header
@$(MAKE) --no-print-directory -f ./Docker.mk prune
@$(MAKE) --no-print-directory footer @$(MAKE) --no-print-directory footer
$(NAME): all $(NAME): all
@ -72,7 +79,7 @@ footer:
@$(ECHO) -e '$(GREEN) , \\ / , $(END)' @$(ECHO) -e '$(GREEN) , \\ / , $(END)'
@$(ECHO) -e '$(GREEN) / \\ )\\__/( / \\ $(END)' @$(ECHO) -e '$(GREEN) / \\ )\\__/( / \\ $(END)'
@$(ECHO) -e '$(GREEN) / \\ (_\\ /_) / \\ $(END)' @$(ECHO) -e '$(GREEN) / \\ (_\\ /_) / \\ $(END)'
@$(ECHO) -e '$(BROWN) ____$(GREEN)/$(BROWN)_____$(GREEN)\\$(BROWN)__$(GREEN)\\@ @/$(BROWN)___$(GREEN)/$(BROWN)_____$(GREEN)\\$(BROWN)____ $(END)' @$(ECHO) -e '$(BROWN) ____$(GREEN)/$(BROWN)_____$(GREEN)\\$(BROWN)__$(GREEN)\\$(WHITE)@ @$(GREEN)/$(BROWN)___$(GREEN)/$(BROWN)_____$(GREEN)\\$(BROWN)____ $(END)'
@$(ECHO) -e '$(BROWN) | $(GREEN)|\\../| $(BROWN) | $(END)' @$(ECHO) -e '$(BROWN) | $(GREEN)|\\../| $(BROWN) | $(END)'
@$(ECHO) -e '$(BROWN) | $(GREEN) \\$(RED)vv$(GREEN)/ $(BROWN) | $(END)' @$(ECHO) -e '$(BROWN) | $(GREEN) \\$(RED)vv$(GREEN)/ $(BROWN) | $(END)'
@$(ECHO) -e '$(BROWN) | $(PROJECT__NAME)$(BROWN) | $(END)' @$(ECHO) -e '$(BROWN) | $(PROJECT__NAME)$(BROWN) | $(END)'
@ -85,17 +92,9 @@ footer:
@$(ECHO) -e '$(GREY) The compilation is $(END)$(GOLD)finished$(END)' @$(ECHO) -e '$(GREY) The compilation is $(END)$(GOLD)finished$(END)'
@$(ECHO) -e '$(GREY) Have a good $(END)$(GOLD)correction$(END)' @$(ECHO) -e '$(GREY) Have a good $(END)$(GOLD)correction$(END)'
# Clean (make clean)
clean:
@$(ECHO) -e '$(GREY) Removing $(END)$(RED)Data dir$(END)'
# Clean (make fclean)
fclean: clean
@$(ECHO) -e '$(GREY) Removing $(END)$(RED)Program$(END)'
# Restart (make re) # Restart (make re)
re: re:
@$(MAKE) --no-print-directory fclean @$(MAKE) --no-print-directory clean
@$(MAKE) --no-print-directory all @$(MAKE) --no-print-directory all
tokei: tokei:

36
docker-compose.yml Normal file
View file

@ -0,0 +1,36 @@
networks:
transcendance-network:
driver: bridge
services:
# service_name:
# build: ./service_name
# container_name: service_name
# image: service_name
# restart: always
# env_file:
# - ${SECRET_DIR}/service_name.env
# networks:
# - transcendance-network
# volumes:
# - service_name-volume:/some_path
# depends_on:
# ports:
# - 'OUTSIDE_PORT:IN_CONTAINER_PORT'
nginx:
build: ./nginx
container_name: nginx
restart: always
networks:
- transcendance-network
ports:
- '8888:443'
enviroment:
- NGINX_DOMAIN=local.maix.me
volumes:
# service_name-vol:
# driver: local
# driver_opts:
# type: 'none'
# o: 'bind'
# device: ${DATA_DIR:-/tmp/ft_deadge}/service_name
# name: "service_name-vol"

30
nginx/17-add-template-prefix.sh Executable file
View file

@ -0,0 +1,30 @@
#!/bin/sh
set -e
ME=$(basename "$0")
entrypoint_log() {
if [ -z "${NGINX_ENTRYPOINT_QUIET_LOGS:-}" ]; then
echo "$@"
fi
}
auto_template() {
local template_dir="${NGINX_ENVSUBST_TEMPLATE_DIR:-/etc/nginx/templates}"
local suffix="${NGINX_ENVSUBST_TEMPLATE_SUFFIX:-.template}"
[ -d "$template_dir" ] || return 0
if [ ! -w "$template_dir" ]; then
entrypoint_log "$ME: ERROR: $template_dir exists, but is not writable"
return 0
fi
find "$template_dir" -follow -type f -print | while read -r template; do
entrypoint_log "$ME: adding $suffix to $template"
mv "$template" "$template$suffix"
done
}
auto_template
exit 0

25
nginx/Dockerfile Normal file
View file

@ -0,0 +1,25 @@
# **************************************************************************** #
# #
# ::: :::::::: #
# Dockerfile :+: :+: :+: #
# +:+ +:+ +:+ #
# By: maiboyer <maiboyer@student.42.fr> +#+ +:+ +#+ #
# +#+#+#+#+#+ +#+ #
# Created: 2025/06/12 16:42:38 by maiboyer #+# #+# #
# Updated: 2025/06/12 18:15:38 by maiboyer ### ########.fr #
# #
# **************************************************************************** #
FROM nginx:stable-alpine
RUN mkdir -p /etc/nginx/ && \
mkdir -p /etc/ssl/certs && \
mkdir -p /etc/ssl/private && \
apk add openssl && \
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/nginx-selfsigned.key \
-out /etc/ssl/certs/nginx-selfsigned.crt \
-subj "/C=FR/OU=student/CN=${NGINX_DOMAIN}"
COPY ./17-add-template-prefix.sh /docker-entrypoint.d/
COPY ./conf /etc/nginx/templates

26
nginx/conf/default.conf Normal file
View file

@ -0,0 +1,26 @@
# this allows the redirection of `http://domain/URL` to `https://domain/URL`
server {
charset UTF-8;
listen 80;
listen [::]:80;
server_name $NGINX_DOMAIN;
if ($host = example.com) {
return 301 https://$host$request_uri;
}
return 404;
}
server {
charset UTF-8;
listen [::]:443 ssl;
listen 443 ssl;
server_name $NGINX_DOMAIN;
ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;
ssl_protocols TLSv1.3;
include conf.d/locations/*.conf;
}

View file

@ -0,0 +1,4 @@
location /api/db {
add_header Content-Type text/plain;
return 200 'db api yay';
}