293 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			293 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
 | |
| # 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
 | |
| <Virtualhost *:80>
 | |
|   ServerName dev.d7.popsu.archi.fr
 | |
|   ProxyPass / http://127.0.0.1:8980/
 | |
|   ProxyPassReverse / http://127.0.0.1:8980/
 | |
|   ProxyRequests Off
 | |
|   ProxyPreserveHost On
 | |
|   proxy_buffer_size          128k;
 | |
|   proxy_buffers              4 256k;
 | |
|   proxy_busy_buffers_size    256k;
 | |
| </Virtualhost>
 | |
| <Virtualhost *:80>
 | |
|   ServerName dev.d9.popsu.archi.fr
 | |
|   ProxyPass / http://127.0.0.1:8980/
 | |
|   ProxyPassReverse / http://127.0.0.1:8980/
 | |
|   ProxyRequests Off
 | |
|   ProxyPreserveHost On
 | |
|   proxy_buffer_size          128k;
 | |
|   proxy_buffers              4 256k;
 | |
|   proxy_busy_buffers_size    256k;
 | |
| </Virtualhost>
 | |
| <Virtualhost *:80>
 | |
|   ServerName dev.phpmyadmin.popsu.archi.fr
 | |
|   ProxyPass / http://127.0.0.1:8981/
 | |
|   ProxyPassReverse / http://127.0.0.1:8981/
 | |
|   ProxyRequests Off
 | |
|   ProxyPreserveHost On
 | |
|   proxy_buffer_size          128k;
 | |
|   proxy_buffers              4 256k;
 | |
|   proxy_busy_buffers_size    256k;
 | |
| </Virtualhost>
 | |
| ```
 | |
| 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:8980;
 | |
|          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:8981;
 | |
|          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
 | |
| 
 | |
| ```
 |