update: scaffolding for nginx
This commit is contained in:
parent
d89dd4f315
commit
fb48a0fa04
7 changed files with 163 additions and 24 deletions
23
Docker.mk
23
Docker.mk
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
43
Makefile
43
Makefile
|
|
@ -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
36
docker-compose.yml
Normal 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
30
nginx/17-add-template-prefix.sh
Executable 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
25
nginx/Dockerfile
Normal 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
26
nginx/conf/default.conf
Normal 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;
|
||||||
|
}
|
||||||
4
nginx/conf/locations/db.conf
Normal file
4
nginx/conf/locations/db.conf
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
location /api/db {
|
||||||
|
add_header Content-Type text/plain;
|
||||||
|
return 200 'db api yay';
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue