# Popsu Docker Popsu powered by druapl 7 in docker environement (nginx, php:5.6-fpm+drush, mariadb, redis:4, phpmyadmin) ## Install docker ``` sudo pacman -S docker docker-compose docker-machine ``` start the docker service ``` sudo systemctl start docker ``` For all the following, DO NOT run docker or make commande as root or with sudo, use this setup: add your user to the docker user group, re-login, and restart docker.service. https://wiki.archlinux.org/index.php/Docker#Installation ## Clone this repos this will clone this repos (main docker environement) and the popsu.arch.fr drupal 7 & 9 source code (without sites/default folder nor mysq ddbs) ``` git clone --recursive -o figli https://figureslibres.io/gogs/bachir/docker-popsu.git ``` submodules : - https://figureslibres.io/gogs/bachir/popsu-d7 - https://figureslibres.io/gogs/bachir/popsu-d9 ### setup /sites/default/settings.php ``` cp -r ressources/d7/settings.php src_d7/sites/default/ cp -r ressources/d9/settings.php src_d9/web/sites/default/ ``` ### get the sites/default/files folder get the files from where you have it and rsync it to src_d7/sites/default/files/ and src_d9/web/sites/default/files/ ## Mysql Copy your-sql-dump.sql into ./ressources/db_d7.sql or ./ressources/db_d9.sql It will be automaticly imported into the mysql container db (only) on the first docker-compose up ## Hosts and reverse proxy add to your /etc/hosts : ``` 127.0.0.1 dev.d7.popsu.archi.fr 127.0.0.1 dev.d9.popsu.archi.fr 127.0.0.1 dev.phpmyadmin.popsu.archi.fr ``` configure your apache vhosts to add a reverse proxy that will redirect the dev.materio.com to our container ```apache ServerName dev.d7.popsu.archi.fr ProxyPass / http://127.0.0.1:8880/ ProxyPassReverse / http://127.0.0.1:8880/ ProxyRequests Off ProxyPreserveHost On proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; ServerName dev.d9.popsu.archi.fr ProxyPass / http://127.0.0.1:8880/ ProxyPassReverse / http://127.0.0.1:8880/ ProxyRequests Off ProxyPreserveHost On proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; ServerName dev.phpmyadmin.popsu.archi.fr ProxyPass / http://127.0.0.1:8881/ ProxyPassReverse / http://127.0.0.1:8881/ ProxyRequests Off ProxyPreserveHost On proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; ``` nginx ```nginx server { listen 80; server_name dev.d7.popsu.archi.fr dev.d9.popsu.archi.fr; access_log off; error_log /var/log/nginx/popsu/error.log error; client_max_body_size 100m; location / { proxy_pass http://127.0.0.1:8880; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } } server { listen 80; server_name dev.phpmyadmin.popsu.archi.fr; location / { proxy_pass http://127.0.0.1:8881; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_buffer_size 128k; proxy_buffers 4 256k; proxy_busy_buffers_size 256k; } } ``` ## Docker For all the following, DO NOT run docker or make commande as root or with sudo, use this setup: add your user to the docker user group, re-login, and restart docker.service. ### docker-compose pull pull the latest image of services ``` make pull ``` ### build only before the first run (may take some time) ``` make build ``` /!\ DO NOT use ```docker-compose build```, it will faile ### run then each time you want to launch the app ``` make up ``` Be aware that a first up, since the db is empty, it will be populated with your files ressources/db_d7.sql and ressources/db_d9.sql. It may take some time depending of your db size. ## Drupal Composer install Only at first up, finish to install drupal 9 composer dependencies but first we need to downgrade composer to version 1 (you'll need to do this downgrade every time you make_down then make_up) ``` docker exec -u 0 -it popsu_php_d9_1 /bin/bash composer selfupdate --1 ``` ctrl+d ``` make exec_php_d9 composer install ``` ## Visualize You can now visit http://dev.d7.popsu.archi.fr and http://dev.d9.popsu.archi.fr on your browser After the first run ## Coding ### drush you can access to drush by loging into the php container ``` make exec_php_d7 # or make exec_php_d9 ``` once inside the php container in /var/www/html you can use drush as usual ## Updating code ``` git pull figli master # then update all submodules git submodule update --recursive --checkout # or only one git submodule update --checkout src_d7/ # or git submodule update --checkout src_d9/ make d9_maj_config ``` ## Updating manualy mysql db copy your db backup into the mysql container ```sh docker cp your-db-file.sql popsu_mysql_d7_1:/root/ # or docker cp your-db-file.sql popsu_mysql_d9_1:/root/ ``` log into mysql container ```sh make exec_mysql_d7 # or make exec_mysql_d9 ``` once inside the mysql container you can use mysql command to drop then create and load the db with your file ``` mysql -uroot -ppopsu > drop database popsu_d7; > create database popsu_d7; > exit; mysql -uroot -ppopsu popsu_d7 < your-db-file.sql # or mysql -uroot -ppopsu > drop database popsu_d9; > create database popsu_d9; > exit; mysql -uroot -ppopsu popsu_d9 < your-db-file.sql ``` ## Makefile DO NOT use directly docker or docker-compose to run this instance use make instead like ```make up``` ```makefile #!/usr/bin/make SHELL = /bin/sh USER_UID := $(shell id -u) USER_UNAME := $(shell id -un) USER_GID := $(shell id -g) USER_GNAME := $(shell id -gn) export USER_UID export USER_UNAME export USER_GID export USER_GNAME pull: docker-compose pull build: docker-compose build --build-arg USER_UID=$(USER_UID) --build-arg USER_UNAME=$(USER_UNAME) --build-arg USER_GID=$(USER_GID) --build-arg USER_GNAME=$(USER_GNAME) buildnc: docker-compose build --no-cache --build-arg USER_UID=$(USER_UID) --build-arg USER_UNAME=$(USER_UNAME) --build-arg USER_GID=$(USER_GID) --build-arg USER_GNAME=$(USER_GNAME) downbuildup: down build up up: docker-compose up -d ps: docker-compose ps logs: docker-compose logs -f d9_maj_config: d9_crd d9_composer_install d9_updb d9_cim d9_cr d9_crd: docker exec enfrancais_pgp_d9_1 /bin/bash -c "drush cache-clear drush" d9_cr: docker exec enfrancais_pgp_d9_1 /bin/bash -c "drush cr" d9_updb: docker exec enfrancais_pgp_d9_1 /bin/bash -c "drush updb -y" d9_cim: docker exec enfrancais_pgp_d9_1 /bin/bash -c "drush config-import -y" d9_composer_install: docker exec enfrancais_pgp_d9_1 /bin/bash -c "composer install --no-dev" down: docker-compose down exec_php_d7: docker exec -it popsu_php_d7_1 bash exec_php_d9: docker exec -it popsu_php_d9_1 sh exec_mysql_d7: docker exec -it popsu_mysql_d7 bash exec_mysql_d9: docker exec -it popsu_mysql_d9 bash ```