From 45ef1f3ddf0eecd0449081c2e1a0fd4ce946a0cf Mon Sep 17 00:00:00 2001 From: Adam JOLY Date: Fri, 10 Jan 2025 16:57:23 +0100 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=8F=97=EF=B8=8F=E3=80=8D=20wip:?= =?UTF-8?q?=20work=20in=20progress,=20not=20done=20yet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 10 +++++- cmd/mariadb/entrypoint/entrypoint.go | 25 ++++++-------- cmd/mariadb/entrypoint/setupEnv.go | 5 --- cmd/mariadb/healthcheck/healthcheck.go | 13 ++------ cmd/nginx-entry/nginx-entry.go | 9 ----- .../wordpress-entry.go | 0 configs/nginx/wp.conf | 14 ++++++++ docker-compose.yml | 2 ++ docker/nginx/Dockerfile | 6 ++-- docker/nginx/docker-entrypoint.sh | 4 --- docker/nginx/docker-healthcheck.sh | 3 ++ docker/nginx/nginx-health.conf | 33 +++++++++++++++++++ go.sum | 4 --- internal/env/env_util.go | 11 +++++++ 14 files changed, 88 insertions(+), 51 deletions(-) delete mode 100644 cmd/mariadb/entrypoint/setupEnv.go delete mode 100644 cmd/nginx-entry/nginx-entry.go rename cmd/{wordpress-entry => wordpress}/wordpress-entry.go (100%) create mode 100644 configs/nginx/wp.conf delete mode 100644 docker/nginx/docker-entrypoint.sh create mode 100644 docker/nginx/docker-healthcheck.sh create mode 100644 docker/nginx/nginx-health.conf delete mode 100644 go.sum diff --git a/Makefile b/Makefile index 9fe8868..659c270 100644 --- a/Makefile +++ b/Makefile @@ -20,9 +20,17 @@ build-cms: start-db: docker compose up db --build +start-nginx: + docker compose up nginx --build + + clean-db: docker stop inception-db docker container rm inception-db docker volume rm inception_wp-db -.PHONY: cms-build db-build websrv-build +clean-nginx: + docker stop inception-nginx + docker container rm inception-nginx + +.PHONY: cms-build db-build websrv-build clean-db clean-nginx diff --git a/cmd/mariadb/entrypoint/entrypoint.go b/cmd/mariadb/entrypoint/entrypoint.go index d0c5725..adbcc14 100644 --- a/cmd/mariadb/entrypoint/entrypoint.go +++ b/cmd/mariadb/entrypoint/entrypoint.go @@ -96,7 +96,7 @@ func checkOlderDB(dataDir string) bool { func waitForMariaDB(rootPass string) { for i := 0; i < 30; i++ { - cmd := exec.Command("mariadb", "-uroot", "-p"+escapePassword(rootPass), "-e", "SELECT 1") + cmd := exec.Command("mariadb", "-uroot", "-p"+env.EscapeEnv(rootPass), "-e", "SELECT 1") cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr if err := cmd.Run(); err == nil { @@ -116,11 +116,6 @@ func waitForMariaDB(rootPass string) { // return fmt.Sprintf("%s", strings.ReplaceAll(identifier, "'", "\"")) //} -func escapePassword(password string) string { - // Escape single quotes in passwords - new := strings.ReplaceAll(password, "\"", "") - return strings.ReplaceAll(new, "'", "\\'") -} func configureMariaDB(rootPassword, user, password, database string) { cmd := exec.Command("mariadb", "-uroot", "-e", fmt.Sprintf(` @@ -131,14 +126,14 @@ func configureMariaDB(rootPassword, user, password, database string) { GRANT ALL PRIVILEGES ON %s.* TO '%s'@'%%'; FLUSH PRIVILEGES; `, - escapePassword(rootPassword), - escapePassword(database), - escapePassword(user), - escapePassword(database), - escapePassword(user), - escapePassword(password), - escapePassword(database), - escapePassword(user), + env.EscapeEnv(rootPassword), + env.EscapeEnv(database), + env.EscapeEnv(user), + env.EscapeEnv(database), + env.EscapeEnv(user), + env.EscapeEnv(password), + env.EscapeEnv(database), + env.EscapeEnv(user), )) // Capture standard output and error @@ -189,7 +184,7 @@ func main() { configureMariaDB(rootPass, user, pass, dbName) - cmd_stop := exec.Command("mariadb-admin", "-uroot", "-p"+escapePassword(rootPass), "shutdown") + cmd_stop := exec.Command("mariadb-admin", "-uroot", "-p"+env.EscapeEnv(rootPass), "shutdown") cmd_stop.Stdout = os.Stdout cmd_stop.Stderr = os.Stderr if err := cmd_stop.Run(); err != nil { diff --git a/cmd/mariadb/entrypoint/setupEnv.go b/cmd/mariadb/entrypoint/setupEnv.go deleted file mode 100644 index 5e8510a..0000000 --- a/cmd/mariadb/entrypoint/setupEnv.go +++ /dev/null @@ -1,5 +0,0 @@ -package main - -import ( - -) diff --git a/cmd/mariadb/healthcheck/healthcheck.go b/cmd/mariadb/healthcheck/healthcheck.go index dc94c68..bbffffc 100644 --- a/cmd/mariadb/healthcheck/healthcheck.go +++ b/cmd/mariadb/healthcheck/healthcheck.go @@ -1,10 +1,9 @@ package main import ( - "fmt" "os" + "fmt" "os/exec" - "strings" "git.keyzox.me/42_adjoly/inception/internal/env" ) @@ -23,16 +22,10 @@ func checkMariaDB(user, password, host, port string) bool { return true } -func escapePassword(password string) string { - // Escape single quotes in passwords - new := strings.ReplaceAll(password, "\"", "") - return strings.ReplaceAll(new, "'", "\\'") -} - func main() { // Configuration - user := escapePassword(env.FileEnv("MYSQL_USER", "mariadb")) - password := escapePassword(env.FileEnv("MYSQL_PASSWORD", "default")) + user := env.EscapeEnv(env.FileEnv("MYSQL_USER", "mariadb")) + password := env.EscapeEnv(env.FileEnv("MYSQL_PASSWORD", "default")) host := "127.0.0.1" port := "3306" diff --git a/cmd/nginx-entry/nginx-entry.go b/cmd/nginx-entry/nginx-entry.go deleted file mode 100644 index 39f3f01..0000000 --- a/cmd/nginx-entry/nginx-entry.go +++ /dev/null @@ -1,9 +0,0 @@ -package main - -import ( - -) - -func main() { - -} diff --git a/cmd/wordpress-entry/wordpress-entry.go b/cmd/wordpress/wordpress-entry.go similarity index 100% rename from cmd/wordpress-entry/wordpress-entry.go rename to cmd/wordpress/wordpress-entry.go diff --git a/configs/nginx/wp.conf b/configs/nginx/wp.conf new file mode 100644 index 0000000..bfa756a --- /dev/null +++ b/configs/nginx/wp.conf @@ -0,0 +1,14 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + location /health { + access_log off; + return 200 'healthy'; + add_header Content-Type text/plain; + } +} diff --git a/docker-compose.yml b/docker-compose.yml index 5985074..fe3a8a8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -35,6 +35,8 @@ services: networks: - inception environment: + - PHP_MEMORY_LIMIT="512M" + - PHP_MAX_UPLOAD="50M" - TZ=Europe/Paris volumes: - wp-site:/var/www/html diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile index 3ea1bb6..378e480 100644 --- a/docker/nginx/Dockerfile +++ b/docker/nginx/Dockerfile @@ -13,12 +13,12 @@ RUN set -x \ VOLUME /etc/nginx RUN mkdir -p /etc/nginx/sites-available -COPY docker-entrypoint.sh /docker-entrypoint.sh -RUN [ "chmod", "+x", "/docker-entrypoint.sh" ] +COPY docker-healthcheck.sh /docker-healthcheck.sh +RUN chmod +x /docker-healthcheck.sh -ENTRYPOINT [ "/docker-entrypoint.sh" ] WORKDIR /etc/nginx STOPSIGNAL SIGQUIT EXPOSE 80 CMD [ "nginx", "-g", "daemon off;" ] +HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD /docker-healthcheck.sh diff --git a/docker/nginx/docker-entrypoint.sh b/docker/nginx/docker-entrypoint.sh deleted file mode 100644 index 8959ebc..0000000 --- a/docker/nginx/docker-entrypoint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -set -e - -exec "$@" diff --git a/docker/nginx/docker-healthcheck.sh b/docker/nginx/docker-healthcheck.sh new file mode 100644 index 0000000..9709d3a --- /dev/null +++ b/docker/nginx/docker-healthcheck.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +curl -f http://localhost/health || exit 1 diff --git a/docker/nginx/nginx-health.conf b/docker/nginx/nginx-health.conf new file mode 100644 index 0000000..3137041 --- /dev/null +++ b/docker/nginx/nginx-health.conf @@ -0,0 +1,33 @@ +user nginx; +worker_processes 1; + +error_log /var/log/nginx/error.log warn; +pid /var/run/nginx/nginx.pid; + +events { + worker_connections 1024; +} + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + sendfile on; + access_log /var/log/nginx/access.log; + keepalive_timeout 3000; + server { + listen 80; + root /www; + index index.php index.html index.htm; + server_name localhost; + client_max_body_size 32m; + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /var/lib/nginx/html; + } + location ~ \.php$ { + fastcgi_pass 127.0.0.1:9000; + fastcgi_index index.php; + include fastcgi.conf; + } + } +} diff --git a/go.sum b/go.sum deleted file mode 100644 index 19dbcec..0000000 --- a/go.sum +++ /dev/null @@ -1,4 +0,0 @@ -filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= -filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= -github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= diff --git a/internal/env/env_util.go b/internal/env/env_util.go index 7a5aea9..56e5d49 100644 --- a/internal/env/env_util.go +++ b/internal/env/env_util.go @@ -2,6 +2,7 @@ package env import ( "os" + "strings" "git.keyzox.me/42_adjoly/inception/internal/log" ) @@ -32,3 +33,13 @@ func EnvCheck(Value, Default string) string { } return Default } + +func EscapeEnv(str string) string { + if str[0] == '"' && str[len(str) - 1] == '"' { + return strings.TrimPrefix(strings.TrimSuffix(str, "\""), "\"") + } else if str[0] == '"' && str[len(str) - 1] == '"' { + return strings.TrimPrefix(strings.TrimSuffix(str, "'"), "'") + } else { + return str + } +}