diff --git a/docker/data/mariadb/.gitignore b/docker/data/mariadb/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/docker/data/mariadb/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/docker/data/wordpress/.gitignore b/docker/data/wordpress/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/docker/data/wordpress/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index eb7fe20..28c03fe 100755 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -39,20 +39,22 @@ services: - WP_TITLE="webserv blog" - WP_DESCRIPTION="" - #- WP_THEME= + - WP_THEME=my-minimalist-blog - WP_ADMIN=admin - WP_ADMIN_PASSWORD=admin - - WP_ADMIN_EMAIL=admin@admin.admin + - WP_ADMIN_EMAIL=admin@wordpress.com networks: - docker-network ports: + - '80:80' - '8080:8080' - '8081:8081' - '8082:8082' volumes: - - data_wordpress:/webserv/htdocs + - data_htdocs:/webserv/htdocs + - data_wordpress:/var/www/html restart: unless-stopped networks: @@ -65,12 +67,19 @@ volumes: driver: local driver_opts: type: none - device: /home/kali/data/mariadb + device: data/mariadb + o: bind + data_htdocs: + name: data_htdocs + driver: local + driver_opts: + type: none + device: ../htdocs o: bind data_wordpress: name: data_wordpress driver: local driver_opts: type: none - device: /home/kali/webserv/htdocs + device: data/wordpress o: bind diff --git a/docker/webserv/Dockerfile b/docker/webserv/Dockerfile index 73da9d7..f1807ff 100755 --- a/docker/webserv/Dockerfile +++ b/docker/webserv/Dockerfile @@ -61,8 +61,20 @@ FROM ubuntu:22.04 ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update && apt-get install -y \ - php \ - php-cgi \ + php \ + php-cgi \ + curl \ + php-phar \ + php-mysqli \ + php-mbstring \ + php-json \ + php-curl \ + php-xml \ + php-zip \ + php-gd \ + # php-session \ + php-tokenizer \ + mariadb-client \ && rm -rf /var/lib/apt/lists/* RUN mkdir /webserv @@ -73,10 +85,18 @@ COPY ./conf/default.conf /webserv/. COPY ./conf/hosts /etc/hosts -# RUN chmod 777 /webserv/default.conf +# Install WP-CLI +RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \ + chmod +x wp-cli.phar && \ + mv wp-cli.phar /usr/local/bin/wp +COPY install-wp.sh /usr/local/bin/. + +RUN chmod +x /usr/local/bin/install-wp.sh WORKDIR /webserv RUN mkdir logs && touch logs/webserv.log +ENTRYPOINT ["/usr/local/bin/install-wp.sh"] + CMD ["./webserv", "default.conf"] diff --git a/docker/webserv/conf/default.conf b/docker/webserv/conf/default.conf index e140370..5727973 100755 --- a/docker/webserv/conf/default.conf +++ b/docker/webserv/conf/default.conf @@ -1,7 +1,7 @@ server { - listen 8080; + listen 80; host 0.0.0.0; - server_name localhost; + server_name whaffman.42.fr; root ./htdocs/site-1/; index index.html index.htm; @@ -74,9 +74,9 @@ server { } server { - listen 8081; + listen 80; host 0.0.0.0; - server_name localhost; + server_name qmennen.42.fr; root ./htdocs/site-2/; index index.html index2.htm; @@ -108,22 +108,21 @@ server { } server { - listen 8082; + listen 80; host 0.0.0.0; - server_name localhost; + server_name wordpress.com; - root ./htdocs/site-3/; - index index.html index2.htm; + root /var/www/html/; + index index.php ; client_max_body_size 1M; location / { autoindex off; index index.php; - allowed_methods GET POST DELETE; + allowed_methods GET POST DELETE PUT; } cgi_enabled yes; cgi_handler .php /usr/bin/php-cgi; - cgi_handler .cgi; } diff --git a/docker/webserv/install-wp.sh b/docker/webserv/install-wp.sh new file mode 100644 index 0000000..4da5360 --- /dev/null +++ b/docker/webserv/install-wp.sh @@ -0,0 +1,49 @@ +#!/bin/sh + + +if [ -f /var/www/html/wp-config.php ]; then + echo "WordPress is already installed." + exec "$@" +fi + +echo "Installing WordPress..." + +echo "wp core download --allow-root --path=/var/www/html" +wp core download --allow-root --path=/var/www/html + +echo "wp config create --allow-root" +wp config create --allow-root \ + --dbname=$MYSQL_DATABASE \ + --dbuser=$MYSQL_USER \ + --dbpass=$MYSQL_PASSWORD \ + --dbhost=$DB_HOST \ + --path=/var/www/html + +echo "wp core install --allow-root" +wp core install --allow-root \ + --url=$DOMAIN_NAME \ + --title=$WP_TITLE \ + --admin_user=$WP_ADMIN \ + --admin_password=$WP_ADMIN_PASSWORD \ + --admin_email=$WP_ADMIN_EMAIL \ + --path=/var/www/html + +echo "wp user create --allow-root" +wp user create --allow-root \ + $WP_USER \ + $WP_USER_EMAIL \ + --role=author \ + --user_pass=$WP_USER_PASSWORD \ + --path=/var/www/html + +echo "wp theme install --allow-root" +wp theme install --allow-root \ + $WP_THEME \ + --activate \ + --path=/var/www/html + +echo "WordPress installation completed." + +chown -R wordpress:wordpress /var/www/html + +exec "$@" \ No newline at end of file