diff --git a/Makefile b/Makefile index 4ffb1c9..07603fc 100644 --- a/Makefile +++ b/Makefile @@ -6,20 +6,37 @@ # By: whaffman +#+ # # +#+ # # Created: 2025/05/12 15:33:56 by whaffman #+# #+# # -# Updated: 2025/05/19 13:22:28 by whaffman ######## odam.nl # +# Updated: 2025/05/20 22:14:24 by whaffman ######## odam.nl # # # # **************************************************************************** # + DOCKER_COMPOSE = docker compose DOCKER_COMPOSE_FILE = ./srcs/docker-compose.yml DOCKER_ENV_FILE = ./srcs/.env -DC = $(DOCKER_COMPOSE) -f $(DOCKER_COMPOSE_FILE) --env-file $(DOCKER_ENV_FILE) +DATA_DIR = ./data +WORDPRESS_DATA_DIR = $(DATA_DIR)/wordpress +MARIADB_DATA_DIR = $(DATA_DIR)/mariadb + +DC = $(DOCKER_COMPOSE) -f $(DOCKER_COMPOSE_FILE) --env-file $(DOCKER_ENV_FILE) --project-name "" .PHONY: all build up down remove all: build up -build: + +$(WORDPRESS_DATA_DIR): + @echo "$(gub)Creating WordPress data directory...$(reset)" + @mkdir -p $(WORDPRESS_DATA_DIR) + @chmod 777 $(WORDPRESS_DATA_DIR) + +$(MARIADB_DATA_DIR): + @echo "$(gub)Creating MariaDB data directory...$(reset)" + @mkdir -p $(MARIADB_DATA_DIR) + @chmod 777 $(MARIADB_DATA_DIR) + + +build: $(WORDPRESS_DATA_DIR) $(MARIADB_DATA_DIR) @echo "$(gub)Building Docker containers...$(reset)" $(DC) build up: @@ -54,7 +71,7 @@ ps: remove: @echo "$(gub)Removing Docker containers...$(reset)" @$(DC) rm -f - @$(DC) volume rm -f + @docker volume rm -f @$(DC) network rm -f diff --git a/srcs/docker-compose.yml b/srcs/docker-compose.yml index 9d6b43b..0d27ead 100644 --- a/srcs/docker-compose.yml +++ b/srcs/docker-compose.yml @@ -4,6 +4,11 @@ services: mariadb: container_name: mariadb restart: always + environment: + - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} + - MYSQL_DATABASE=${MYSQL_DATABASE} + - MYSQL_USER=${MYSQL_USER} + - MYSQL_PASSWORD=${MYSQL_PASSWORD} build: context: ./requirements/mariadb dockerfile: Dockerfile @@ -27,27 +32,62 @@ services: # volumes: # - data_wordpress:/var/www/html - # wordpress: - # restart: always - # build: - # context: ./requirements/wordpress - # dockerfile: Dockerfile - # depends_on: - # - mariadb - # ports: - # - '9000:9000' - # networks: - # - docker-network - # volumes: - # - data_wordpress:/var/www/html + wordpress: + container_name: wordpress + restart: always + build: + context: ./requirements/wordpress + dockerfile: Dockerfile + depends_on: + - mariadb + environment: + - DOMAIN_NAME=whaffman.42.fr + + - MYSQL_DATABASE=wordpress + - MYSQL_USER=wordpress + - MYSQL_PASSWORD=42wordpress42 + - MYSQL_ROOT_PASSWORD=42root42 + + - DB_HOST=mariadb + - DB_PORT=3306 + + - WP_TITLE=Inception + - WP_DESCRIPTION=Inception project + + - WP_ADMIN=theboss + - WP_ADMIN_PASSWORD=42theboss42 + - WP_ADMIN_EMAIL=inception@duinvoetje.nl + + - WP_THEME=twentytwentyfour + + - WP_USER=inception + - WP_USER_PASSWORD=42inception42 + - WP_USER_EMAIL=inception@duinvoetje.nl + ports: + - '9000:9000' + networks: + - docker-network + volumes: + - data_wordpress:/var/www/html networks: docker-network: + name: docker-network volumes: data_mariadb: + name: data_mariadb driver: local + driver_opts: + type: none + device: ../data/mariadb + o: bind data_wordpress: + name: data_wordpress driver: local + driver_opts: + type: none + device: ../data/wordpress + o: bind diff --git a/srcs/requirements/mariadb/conf/my.cnf b/srcs/requirements/mariadb/conf/my.cnf index 740d6bd..9fe3b8c 100644 --- a/srcs/requirements/mariadb/conf/my.cnf +++ b/srcs/requirements/mariadb/conf/my.cnf @@ -2,5 +2,4 @@ port=3306 bind-address=0.0.0.0 datadir=/var/lib/mysql -socket=/var/run/mysqld/mysql.sock pid-file=/var/run/mysqld/mysqld.pid diff --git a/srcs/requirements/mariadb/tools/docker-entrypoint.sh b/srcs/requirements/mariadb/tools/docker-entrypoint.sh index 889c2a1..6b7dd22 100644 --- a/srcs/requirements/mariadb/tools/docker-entrypoint.sh +++ b/srcs/requirements/mariadb/tools/docker-entrypoint.sh @@ -6,7 +6,7 @@ if [ "$1" = 'mysqld' ]; then # Initialize the database if it doesn't exist if [ ! -d "/var/lib/mysql/mysql" ]; then echo "Initializing database..." - mysql_install_db --user=mysql --datadir=/var/lib/mysql --rpm + mysql_install_db --user=mariadb --datadir=/var/lib/mysql --rpm echo "Database initialized." # Start MariaDB temporarily to set up initial configuration diff --git a/srcs/requirements/nginx/Dockerfile b/srcs/requirements/nginx/Dockerfile index d90ba71..c51fb48 100644 --- a/srcs/requirements/nginx/Dockerfile +++ b/srcs/requirements/nginx/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:3.20 RUN apk add --no-cache \ - nginx \ + nginx &&\ rm -rf /var/cache/apk/* diff --git a/srcs/requirements/wordpress/Dockerfile b/srcs/requirements/wordpress/Dockerfile index f4befe3..087c978 100644 --- a/srcs/requirements/wordpress/Dockerfile +++ b/srcs/requirements/wordpress/Dockerfile @@ -14,7 +14,7 @@ RUN apk add --no-cache \ php83-gd \ php83-session \ mariadb-client \ - curl \ + curl &&\ rm -rf /var/cache/apk/* # Add a new user and group @@ -34,9 +34,11 @@ RUN echo "memory_limit = 512M" >> /etc/php83/php.ini # Copy and set permissions for the install script COPY ./tools/install.sh /usr/local/bin/install.sh RUN chmod +x /usr/local/bin/install.sh -RUN /usr/local/bin/install.sh + # Switch to the new user -USER wordpress + + +ENTRYPOINT ["/usr/local/bin/install.sh"] CMD ["php-fpm83", "-F"] \ No newline at end of file diff --git a/srcs/requirements/wordpress/tools/install.sh b/srcs/requirements/wordpress/tools/install.sh index f0057fe..17e95e9 100644 --- a/srcs/requirements/wordpress/tools/install.sh +++ b/srcs/requirements/wordpress/tools/install.sh @@ -1,9 +1,12 @@ -#!bin/sh +#!/bin/sh # This script is used to install WordPress and configure it with a MariaDB database. # It checks for the presence of a database and user, creates them if they don't exist, # and sets up the WordPress configuration file with the database connection details. +echo "Installing WordPress..." +sleep 10 +# Check if the database exists wp core download --allow-root --path=/var/www/html wp config create --allow-root \ --dbname=$MYSQL_DATABASE \ @@ -29,3 +32,6 @@ wp theme install --allow-root \ --activate \ --path=/var/www/html +echo "WordPress installation completed." + +exec "$@" \ No newline at end of file