From b647c5f014da697bb4cbc0df73162b8792ed1556 Mon Sep 17 00:00:00 2001 From: whaffman Date: Thu, 17 Jul 2025 18:24:39 +0200 Subject: [PATCH] am i done --- setup.sh | 15 +++++ srcs/docker-compose.yml | 34 ++++++++-- srcs/requirements/adminer/Dockerfile | 5 +- srcs/requirements/ftp/Dockerfile | 5 +- srcs/requirements/mailhog/Dockerfile | 3 +- srcs/requirements/nginx/Dockerfile | 9 +-- srcs/requirements/nginx/conf/nginx.conf | 10 +++ srcs/requirements/redis/Dockerfile | 4 +- srcs/requirements/static-site/Dockerfile | 10 +++ .../requirements/static-site/site/42_Logo.svg | 8 +++ srcs/requirements/static-site/site/index.html | 64 +++++++++++++++++++ srcs/requirements/wordpress/tools/install.sh | 2 +- 12 files changed, 153 insertions(+), 16 deletions(-) create mode 100755 setup.sh create mode 100644 srcs/requirements/static-site/Dockerfile create mode 100644 srcs/requirements/static-site/site/42_Logo.svg create mode 100644 srcs/requirements/static-site/site/index.html diff --git a/setup.sh b/setup.sh new file mode 100755 index 0000000..4c7e066 --- /dev/null +++ b/setup.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +SUBDOMAINS=( + "whaffman.42.fr" "mail.whaffman.42.fr" "adminer.whaffman.42.fr" "ftp.whaffman.42.fr") +HOSTS_FILE="/etc/hosts" +IP="127.0.0.1" + +for SUBDOMAIN in "${SUBDOMAINS[@]}"; do + if ! grep -q "$SUBDOMAIN" "$HOSTS_FILE"; then + echo "$IP $SUBDOMAIN" | sudo tee -a "$HOSTS_FILE" > /dev/null + echo "Added $SUBDOMAIN to $HOSTS_FILE" + else + echo "$SUBDOMAIN already exists in $HOSTS_FILE" + fi +done \ No newline at end of file diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml index b0cd791..5827e29 100644 --- a/srcs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -18,6 +18,7 @@ services: - data_mariadb:/var/lib/mysql restart: unless-stopped + nginx: container_name: nginx build: @@ -26,18 +27,25 @@ services: args: DOMAIN_NAME: ${DOMAIN_NAME} depends_on: - - wordpress + wordpress: + condition: service_healthy + mailhog: + condition: service_healthy + adminer: + condition: service_healthy environment: - DOMAIN_NAME=${DOMAIN_NAME} ports: - '443:443' - '8443:8443' + - '8080:8080' networks: - docker-network volumes: - data_wordpress:/var/www/html restart: unless-stopped + wordpress: container_name: wordpress build: @@ -46,7 +54,12 @@ services: args: HOST_UID: ${HOST_UID:-1000} depends_on: - - mariadb + mariadb: + condition: service_healthy + redis: + condition: service_healthy + mailhog: + condition: service_healthy environment: - DOMAIN_NAME=${DOMAIN_NAME} @@ -91,7 +104,8 @@ services: args: HOST_UID: ${HOST_UID:-1000} depends_on: - - wordpress + wordpress: + condition: service_healthy environment: - FTP_USER=${FTP_USER} - FTP_PASS=${FTP_PASS} @@ -112,7 +126,8 @@ services: context: ./requirements/adminer dockerfile: Dockerfile depends_on: - - mariadb + mariadb: + condition: service_healthy environment: - ADMINER_DEFAULT_SERVER=mariadb networks: @@ -130,7 +145,16 @@ services: environment: - HOST_UID=${HOST_UID:-1000}=value - + static-site: + container_name: static-site + build: + context: ./requirements/static-site + dockerfile: Dockerfile + environment: + - DOMAIN_NAME=${DOMAIN_NAME} + networks: + - docker-network + restart: unless-stopped networks: docker-network: diff --git a/srcs/requirements/adminer/Dockerfile b/srcs/requirements/adminer/Dockerfile index bedcfe4..9deca1f 100644 --- a/srcs/requirements/adminer/Dockerfile +++ b/srcs/requirements/adminer/Dockerfile @@ -10,6 +10,7 @@ RUN apk add --no-cache \ php83-session \ php83-json \ mariadb-client \ + netcat-openbsd \ curl && \ rm -rf /var/cache/apk/* @@ -22,7 +23,7 @@ RUN mkdir -p /var/www/html && \ COPY ./conf/www.conf /etc/php83/php-fpm.d/www.conf -EXPOSE 9000 - CMD ["php-fpm83", "-F"] +HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \ + CMD nc -z 127.0.0.1 9000 || exit 1 diff --git a/srcs/requirements/ftp/Dockerfile b/srcs/requirements/ftp/Dockerfile index 4d14c90..eaff701 100644 --- a/srcs/requirements/ftp/Dockerfile +++ b/srcs/requirements/ftp/Dockerfile @@ -5,6 +5,7 @@ ARG HOST_UID=1000 RUN apk add --no-cache \ vsftpd \ + netcat-openbsd \ && rm -rf /var/cache/apk/* COPY ./conf/vsftpd.conf /etc/vsftpd/vsftpd.conf @@ -14,5 +15,5 @@ RUN chmod +x /docker-entrypoint.sh EXPOSE 20 21 30000-30009 CMD ["/docker-entrypoint.sh"] -# HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ -# CMD nc -z localhost 21 || exit 1 \ No newline at end of file +HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ + CMD nc -z localhost 21 || exit 1 \ No newline at end of file diff --git a/srcs/requirements/mailhog/Dockerfile b/srcs/requirements/mailhog/Dockerfile index 41d03cd..6ef10f5 100644 --- a/srcs/requirements/mailhog/Dockerfile +++ b/srcs/requirements/mailhog/Dockerfile @@ -3,6 +3,7 @@ FROM alpine:3.21 AS builder RUN apk add --no-cache \ go \ git \ + netcat-openbsd \ && rm -rf /var/cache/apk/* ENV GOROOT /usr/lib/go @@ -26,4 +27,4 @@ COPY --from=builder /go/bin/MailHog /usr/local/bin/MailHog CMD ["MailHog"] HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \ - CMD curl --silent --fail http://localhost:8025/ || exit 1 \ No newline at end of file + CMD nc -z localhost 8025 || exit 1 \ No newline at end of file diff --git a/srcs/requirements/nginx/Dockerfile b/srcs/requirements/nginx/Dockerfile index 038a552..f232667 100644 --- a/srcs/requirements/nginx/Dockerfile +++ b/srcs/requirements/nginx/Dockerfile @@ -9,11 +9,12 @@ RUN apk add --no-cache \ ARG DOMAIN_NAME RUN openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ - -keyout /etc/ssl/private/nginx-selfsigned.key \ - -out /etc/ssl/certs/nginx-selfsigned.crt \ - -subj "/CN=${DOMAIN_NAME}" + -keyout /etc/ssl/private/nginx-selfsigned.key \ + -out /etc/ssl/certs/nginx-selfsigned.crt \ + -subj "/CN=*.${DOMAIN_NAME}" COPY ./conf/nginx.conf /etc/nginx/nginx.conf EXPOSE 443 8443 CMD ["nginx", "-g", "daemon off;"] -# HEALTHCHECK --interval=5s --timeout=3s --start-period=5s --retries=1 CMD curl --insecure -f https://127.0.0.1:443/ || exit 1 +HEALTHCHECK --interval=5s --timeout=3s --start-period=5s --retries=1 \ + CMD curl --insecure -f https://127.0.0.1:443/ || exit 1 diff --git a/srcs/requirements/nginx/conf/nginx.conf b/srcs/requirements/nginx/conf/nginx.conf index efe999e..af96c18 100644 --- a/srcs/requirements/nginx/conf/nginx.conf +++ b/srcs/requirements/nginx/conf/nginx.conf @@ -5,6 +5,7 @@ events { worker_connections 1024; } + http { include /etc/nginx/mime.types; default_type application/octet-stream; @@ -32,6 +33,7 @@ http { fastcgi_index adminer.php; include fastcgi.conf; } + location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass wordpress:9000; @@ -41,6 +43,14 @@ http { } + server { + listen 8080; + server_name ${DOMAIN_NAME}; + location / { + proxy_pass http://static-site:80; + } + } + server { listen 8443 ssl; server_name ${DOMAIN_NAME}; diff --git a/srcs/requirements/redis/Dockerfile b/srcs/requirements/redis/Dockerfile index 301c9d1..ca5bb49 100644 --- a/srcs/requirements/redis/Dockerfile +++ b/srcs/requirements/redis/Dockerfile @@ -16,4 +16,6 @@ RUN chown -R redis:redis /data USER redis # Start Redis server -CMD ["redis-server", "--protected-mode", "no"] \ No newline at end of file +CMD ["redis-server", "--protected-mode", "no"] +HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \ + CMD redis-cli ping || exit 1 \ No newline at end of file diff --git a/srcs/requirements/static-site/Dockerfile b/srcs/requirements/static-site/Dockerfile new file mode 100644 index 0000000..c350cbf --- /dev/null +++ b/srcs/requirements/static-site/Dockerfile @@ -0,0 +1,10 @@ +FROM alpine:3.20 + +RUN apk add --no-cache lighttpd && \ + rm -rf /var/cache/apk/* + +# Copy your static site files into the web root +COPY site/ /var/www/localhost/htdocs/ + +# Run Lighttpd in the foreground +CMD ["lighttpd", "-D", "-f", "/etc/lighttpd/lighttpd.conf"] \ No newline at end of file diff --git a/srcs/requirements/static-site/site/42_Logo.svg b/srcs/requirements/static-site/site/42_Logo.svg new file mode 100644 index 0000000..f78e97d --- /dev/null +++ b/srcs/requirements/static-site/site/42_Logo.svg @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/srcs/requirements/static-site/site/index.html b/srcs/requirements/static-site/site/index.html new file mode 100644 index 0000000..e916ac8 --- /dev/null +++ b/srcs/requirements/static-site/site/index.html @@ -0,0 +1,64 @@ + + + + + Welcome to WHAFFMAN + + + + + 42 Logo +

Welcome to whaffman.42.fr

+

Available Services

+ + + \ No newline at end of file diff --git a/srcs/requirements/wordpress/tools/install.sh b/srcs/requirements/wordpress/tools/install.sh index 7ee4eee..c75d4fb 100644 --- a/srcs/requirements/wordpress/tools/install.sh +++ b/srcs/requirements/wordpress/tools/install.sh @@ -6,7 +6,7 @@ if [ -f /var/www/html/wp-config.php ]; then exec "$@" fi echo "Installing WordPress..." -sleep 10 + echo "wp core download --allow-root --path=/var/www/html" wp core download --allow-root --path=/var/www/html