From 9e13af4ddb06d104f1a1b4676f0af9ed0fe75c3d Mon Sep 17 00:00:00 2001 From: 3wc <3wc@doesthisthing.work> Date: Thu, 11 Jan 2024 23:38:37 -0300 Subject: [PATCH] Add docker-compose --- README.md | 17 ++++++++++++++++ docker-compose.yml | 44 ++++++++++++++++++++++++++++++++++++++++ entrypoint.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 docker-compose.yml create mode 100755 entrypoint.sh diff --git a/README.md b/README.md index b5c8109..cd6b7ed 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,8 @@ This will launch a WordPress local instance at http://localhost:8888. You can lo ### Lando +Install Lando, then: + ```sh $ lando start $ lando wp --path=/app/web/ core install \ @@ -38,3 +40,18 @@ $ lando wp --path=/app/web/ theme activate sample-wp-block-theme ``` ### docker-compose + +Install Docker-compose, then: + +```sh +$ docker-compose up -d +# wait a few seconds, run `docker-compose logs` to check start-up +$ docker-compose exec --user=user wordpress wp core install \ + --title="Dev Env" \ + --admin_user=admin --admin_password=admin --admin_email=admin@example.com \ + --skip-email --url=http://sample-block-theme.localhost:8080 +$ docker-compose exec --user=user wordpress wp theme activate sample-wp-block-theme +``` + +This should also work with `docker compose` (i.e. newwer Docker / Compose 2); +just replace `docker-compose` with `docker compose` in the above. diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4428fec --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,44 @@ +--- +version: "3" + +services: + wordpress: + image: "wordpress" + ports: + - "8080:80" + dns: 4.2.2.4 + volumes: + - "./entrypoint.sh:/usr/local/bin/entrypoint.sh:z" + - ".:/var/www/html/wp-content/themes/sample-wp-block-theme:z" + entrypoint: ["/usr/local/bin/entrypoint.sh"] + networks: + - backend + environment: + - WORDPRESS_DB_HOST=db + - WORDPRESS_DB_USER=wordpress + - WORDPRESS_DB_PASSWORD=wordpress + - WORDPRESS_DB_NAME=wordpress + - WORDPRESS_TABLE_PREFIX=wp_ + - PAGER=more + container_name: "samplewpblocktheme_wordpress" + + db: + image: "mariadb:10.6" + ports: + - 3306:3306 + volumes: + - "mariadb:/var/lib/mysql" + networks: + - backend + environment: + - MYSQL_ROOT_PASSWORD=wordpress + - MYSQL_DATABASE=wordpress + - MYSQL_USER=wordpress + - MYSQL_PASSWORD=wordpress + container_name: "samplewpblocktheme_db" + +volumes: + mariadb: + +networks: + backend: diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..5724829 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,50 @@ +#!/bin/bash + +if [ -n "$PHP_EXTENSIONS" ]; then + for extension in $PHP_EXTENSIONS; do + if ! php -m | grep -q $extension; then + docker-php-ext-install $PHP_EXTENSIONS + fi + done +fi + +if ! id -u "user" >/dev/null ; then + useradd -u 1000 -m user + mkdir /var/www/html/vendor + chown -R user:user /var/www/html/vendor +fi + +if [ ! -x /usr/bin/unzip ]; then + apt update && apt install unzip +fi + +if [ ! -x /usr/local/bin/wp ]; then + curl -z /usr/local/bin/wp -o /usr/local/bin/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar + chmod +x /usr/local/bin/wp +fi + +if [ ! -x /usr/local/bin/composer ]; then + mkdir -p /var/www/.composer + chown user:user /var/www/.composer + + curl https://getcomposer.org/installer -o /tmp/composer-setup.php + php -r "if (hash_file('sha384', '/tmp/composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a450292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" + php /tmp/composer-setup.php + rm /tmp/composer-setup.php + + mv /var/www/html/composer.phar /usr/local/bin/composer +fi + +export APACHE_RUN_USER=user +export APACHE_RUN_GROUP=user + +# Increase PHP memory limiit because it's A HOG +echo 'memory_limit = 256M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini; + +if [ -n "$@" ]; then + "$@" +fi + +# Upstream ENTRYPOINT +# https://github.com/docker-library/wordpress/blob/master/php7.4/apache/Dockerfile#L120 +/usr/local/bin/docker-entrypoint.sh apache2-foreground