diff --git a/Makefile b/Makefile index 382e110..8774b98 100644 --- a/Makefile +++ b/Makefile @@ -18,13 +18,13 @@ build-cms: docker build -f $(DOCKERFILE_CMS) -t $(CMS_NAME) $(DOCKER_CONTEXT) start-db: - docker compose -f $(DOCKER_CONTEXT)/docker-compose.yml up db --build + docker compose -f $(DOCKER_CONTEXT)docker-compose.yml up db --build start-nginx: - docker compose -f $(DOCKER_CONTEXT)/docker-compose.yml up nginx --build + docker compose -f $(DOCKER_CONTEXT)docker-compose.yml up nginx --build start-wordp: - docker compose -f $(DOCKER_CONTEXT)/docker-compose.yml up wordpress-php --build + docker compose -f $(DOCKER_CONTEXT)docker-compose.yml up wordpress-php --build clean-db: docker stop inception-db @@ -32,8 +32,15 @@ clean-db: docker volume rm inception_wp-db docker image rm inception-db +clean-wordp: + docker stop inception-wordp-php + docker container rm inception-wordp-php + docker volume rm inception_wp-site + docker image rm inception-wordpress-php + clean-nginx: docker stop inception-nginx docker container rm inception-nginx + docker image rm inception-nginx .PHONY: cms-build db-build websrv-build clean-db clean-nginx diff --git a/srcs/cmd/mariadb/entrypoint/entrypoint.go b/srcs/cmd/mariadb/entrypoint/entrypoint.go index adbcc14..9e3f5dd 100644 --- a/srcs/cmd/mariadb/entrypoint/entrypoint.go +++ b/srcs/cmd/mariadb/entrypoint/entrypoint.go @@ -149,7 +149,6 @@ func configureMariaDB(rootPassword, user, password, database string) { func main() { args := os.Args - if args[1] == "mariadbd" || args[1] == "mysqld" { _log.Log("note", "Entrypoint script for MariaDB Server started") diff --git a/srcs/cmd/wordpress/entrypoint/entrypoint.go b/srcs/cmd/wordpress/entrypoint/entrypoint.go new file mode 100644 index 0000000..eb902d4 --- /dev/null +++ b/srcs/cmd/wordpress/entrypoint/entrypoint.go @@ -0,0 +1,82 @@ +package main + +import ( + "bytes" + "errors" + "fmt" + "log" + "os" + "os/exec" + + "git.keyzox.me/42_adjoly/inception/internal/env" + "git.keyzox.me/42_adjoly/inception/internal/log" + "git.keyzox.me/42_adjoly/inception/internal/pass" +) + +func makeFpmConf() { + val, is := os.LookupEnv("PHP_NOT_CONFIGURE") + _, err := os.ReadFile("/www-docker.conf") + + if (is == true && val == "true") { + _log.Log("note", "PHP-FPM - Not configuring (PHP-CONFIGURE set to true)") + return + } + if errors.Is(err, os.ErrNotExist) { + _log.Log("note", "PHP-FPM - already configured, skipping") + return + } + _log.Log("note", "PHP-FPM - Configuring...") + v, is := os.LookupEnv("PHP_PORT") + content, err := os.ReadFile("/www-docker.conf") + if err != nil { + log.Fatal(err) + } + if !is { + v = "9000" + } + res := bytes.Replace([]byte(content), []byte("$PHP_PORT"), []byte(v), -1) + + if err := os.WriteFile("/etc/php84/php-fpm.d/www.conf", res, 0660); err != nil { + log.Fatal(err) + } + os.Remove("/www-docker.conf") +} + +func main() { + args := os.Args + + if args[1] == "php-fpm84" { + _log.Log("note", "Entrypoint script for Wordpress-PHP-FPM Server started") + + makeFpmConf() + + _, err := os.ReadFile("/usr/src/wordpress/wp-config.php") + + if err != nil && env.IsEnvSet("WORDPRESS_") { + content, err := os.ReadFile("/usr/src/wordpress/wp-config-docker.php") + if err != nil { + log.Fatal(err) + } + res := bytes.Replace([]byte(content), []byte("put your unique phrase here"), []byte(pass.GenStrPass(32)), -1) + if err := os.WriteFile("/usr/src/wordpress/wp-config.php", res, 0660); err != nil { + log.Fatal(err) + } + cmd := exec.Command("chown", "www-data:www-data", "/usr/src/wordpress/wp-config.php") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err == nil { + log.Fatal(err) + } + } + } + + _log.Log("note", "Starting container") + cmd := exec.Command(args[1], args[2:]...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + cmd.Stdin = os.Stdin + if err := cmd.Run(); err != nil { + fmt.Printf("Error running MariaDB: %v\n", err) + os.Exit(1) + } +} diff --git a/srcs/cmd/wordpress/wordpress-entry.go b/srcs/cmd/wordpress/wordpress-entry.go deleted file mode 100644 index 39f3f01..0000000 --- a/srcs/cmd/wordpress/wordpress-entry.go +++ /dev/null @@ -1,9 +0,0 @@ -package main - -import ( - -) - -func main() { - -} diff --git a/srcs/configs/nginx/ff.conf b/srcs/configs/nginx/ff.conf new file mode 100644 index 0000000..481aa8a --- /dev/null +++ b/srcs/configs/nginx/ff.conf @@ -0,0 +1,19 @@ +server { + listen 80; + + server_name adjoly.42.fr; + root /var/www/html; + + index index.php index.html index.htm; + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ \.php$ { + include fastcgi_params; + fastcgi_pass php-fpm:9000; + fastcgi_index index.php; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } +} diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml index fd8e41d..297399f 100644 --- a/srcs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -31,17 +31,16 @@ services: container_name: inception-wordp-php build: context: . - dockerfile: docker/wordpress/dockerfile + dockerfile: docker/wordpress/Dockerfile networks: - inception environment: - PHP_MEMORY_LIMIT="512M" - PHP_MAX_UPLOAD="50M" + - PHP_PORT=9000 - TZ=Europe/Paris volumes: - wp-site:/var/www/html - depends_on: - - db restart: unless-stopped db: diff --git a/srcs/docker/alpine/Dockerfile b/srcs/docker/alpine/Dockerfile new file mode 100644 index 0000000..8e2bda6 --- /dev/null +++ b/srcs/docker/alpine/Dockerfile @@ -0,0 +1,3 @@ +FROM scratch +ADD alpine-minirootfs-3.21.2-x86_64.tar.gz / +CMD ["/bin/sh"] diff --git a/srcs/docker/nginx/Dockerfile b/srcs/docker/nginx/Dockerfile index 378e480..505467d 100644 --- a/srcs/docker/nginx/Dockerfile +++ b/srcs/docker/nginx/Dockerfile @@ -1,4 +1,5 @@ -FROM alpine:3.21 +FROM scratch +ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz / LABEL version="0.1" LABEL maintainer="KeyZox" diff --git a/srcs/docker/wordpress/Dockerfile b/srcs/docker/wordpress/Dockerfile index c28cdef..3a64785 100644 --- a/srcs/docker/wordpress/Dockerfile +++ b/srcs/docker/wordpress/Dockerfile @@ -1,25 +1,49 @@ -FROM alpine:3.21 +FROM scratch +ADD docker/alpine/alpine-minirootfs-3.21.2-x86_64.tar.gz / LABEL version="0.1" LABEL maintainer="KeyZox" RUN set -x \ - && adduser -u 82 -D -S -G www-data www-data \ - && apk add --no-cache php84-fpm wget + && adduser -u 82 -D -S -G www-data www-data -VOLUME /var/www/html +COPY go.mod /build/go.mod +COPY cmd /build/cmd +COPY internal /build/internal +COPY docker/wordpress/www-docker.conf /www-docker.conf -WORKDIR /var/www/html -RUN wget https://wordpress.org/wordpress-6.7.1.tar.gz \ - && tar -xzvf wordpress-6.7.1.tar.gz \ - && rm workpress-6.7.1.tar.gz +RUN apk add --no-cache go curl php84-fpm tzdata fcgi \ + && cd /build \ + && go build git.keyzox.me/42_adjoly/inception/cmd/wordpress/entrypoint \ + && cp /build/entrypoint /docker-entrypoint \ + && chmod +x /docker-entrypoint \ + && apk del go \ + && rm -Rf /build \ + && mkdir -p /usr/src/wordpress -#COPY docker-entrypoint.sh / -#RUN [ "chmod", "+x", "/docker-entrypoint.sh" ] +VOLUME /usr/src/wordpress -#ENTRYPOINT [ "/docker-entrypoint.sh" ] -WORKDIR /var/www/html +WORKDIR /usr/src + +RUN version='6.7.1' \ + && curl -o wordpress.tar.gz -fL "https://wordpress.org/wordpress-$version.tar.gz" \ + && apk del curl \ + && rm -rf /var/cache/apk/* \ + && tar -xzvf wordpress.tar.gz \ + && rm wordpress.tar.gz \ + && chown -R www-data:www-data /usr/src/wordpress \ + && mkdir wp-content \ + && for dir in /usr/src/wordpress/wp-content/*/ cache; do \ + dir="$(basename "${dir%/}")"; \ + mkdir "wp-content/$dir"; \ + done \ + && chown -R www-data:www-data wp-content \ + && chmod -R 1777 wp-content + +ENTRYPOINT [ "/docker-entrypoint" ] +WORKDIR /usr/src/wordpress STOPSIGNAL SIGQUIT EXPOSE 9000 CMD [ "php-fpm84", "-F" ] +HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD cgi-fcgi -bind -connect 127.0.0.1:9000 || exit 1 diff --git a/srcs/docker/wordpress/wp-config-docker.php b/srcs/docker/wordpress/wp-config-docker.php new file mode 100644 index 0000000..00b4ece --- /dev/null +++ b/srcs/docker/wordpress/wp-config-docker.php @@ -0,0 +1,139 @@ +