This commit is contained in:
Willem Haffmans 2025-05-21 11:43:03 +02:00
parent 4bf28f2e28
commit 0b15a19325
7 changed files with 88 additions and 24 deletions

View File

@ -6,20 +6,37 @@
# By: whaffman <whaffman@student.codam.nl> +#+ #
# +#+ #
# 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +1,6 @@
FROM alpine:3.20
RUN apk add --no-cache \
nginx \
nginx &&\
rm -rf /var/cache/apk/*

View File

@ -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"]

View File

@ -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 "$@"