D7 running, D9 phpinfo ok

This commit is contained in:
Bachir Soussi Chiadmi 2021-03-15 13:29:01 +01:00
parent d71f2768cc
commit f0b63a7ccf
25 changed files with 704 additions and 155 deletions

11
.env
View File

@ -1,10 +1,15 @@
COMPOSE_PROJECT_NAME=popsu COMPOSE_PROJECT_NAME=popsu
PROJECT_ROOT=./public_html PROJECT_ROOT_D7=./src_d7
PROJECT_ROOT_D9=./src_d9
LOG_ROOT=./log LOG_ROOT=./log
DB_IMPORTE_FILE=./ressources/db.sql DB_IMPORTE_FILE_D7=./ressources/pospsu_d7.sql
DB_IMPORTE_FILE_D9=./ressources/pospsu_d9.sql
DB_ROOT_PASSWORD=popsu DB_ROOT_PASSWORD=popsu
DB_NAME=popsu DB_NAME_D7=popsu_d7
DB_NAME_D9=popsu_d9
DB_USERNAME=popsu DB_USERNAME=popsu
DB_PASSWORD=popsu DB_PASSWORD=popsu
XDEBUG_INI=./ressources/xdebug.ini

7
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "public_html"] [submodule "src_d7"]
path = public_html path = src_d7
url = https://figureslibres.io/gogs/bachir/popsu-d7.git url = https://figureslibres.io/gogs/bachir/popsu-d7.git
[submodule "src_d9"]
path = src_d9
url = https://figureslibres.io/gogs/bachir/popsu-d9.git

View File

@ -1,3 +1,9 @@
FROM nginx:latest FROM nginx:latest
RUN apt-get update \
&& apt-get install -y \
vim
COPY ./default.conf /etc/nginx/conf.d/default.conf COPY ./default.conf /etc/nginx/conf.d/default.conf
COPY ./bashrc /root/.bashrc
COPY ./inputrc /root/.inputrc

3
Docker/nginx/bashrc Normal file
View File

@ -0,0 +1,3 @@
PS1='\e[36m\e[1mNGINX\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

View File

@ -1,7 +1,8 @@
server { server {
listen 80 default_server; listen 80;
root /var/www/html; root /var/www/d7;
index index.html index.php; index index.html index.php;
server_name dev.d7.popsu.archi.fr;
charset utf-8; charset utf-8;
@ -13,7 +14,7 @@ server {
location = /robots.txt { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; }
access_log on; access_log on;
error_log /var/log/nginx/error.log error; error_log /var/log/nginx/error-d7.log error;
sendfile off; sendfile off;
@ -21,7 +22,45 @@ server {
location ~ \.php$ { location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000; fastcgi_pass php_d7:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
server {
listen 80;
root /var/www/d9/web;
index index.html index.php;
server_name dev.d9.popsu.archi.fr;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log on;
error_log /var/log/nginx/error-d9.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php_d9:9000;
fastcgi_index index.php; fastcgi_index index.php;
include fastcgi_params; include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

2
Docker/nginx/inputrc Normal file
View File

@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on

View File

@ -23,3 +23,24 @@ RUN apt-get update && apt-get install -y \
composer global require drush/drush:6.5.0 && \ composer global require drush/drush:6.5.0 && \
composer global install && \ composer global install && \
ln -s /usr/local/composer/vendor/drush/drush/drush /usr/local/bin/drush ln -s /usr/local/composer/vendor/drush/drush/drush /usr/local/bin/drush
ARG USER_UID
ARG USER_UNAME
ARG USER_GID
ARG USER_GNAME
RUN if getent group ${USER_GNAME} ; then groupdel ${USER_GNAME}; fi &&\
groupadd -g ${USER_GID} ${USER_GNAME} &&\
useradd -l -u ${USER_UID} -g ${USER_GNAME} ${USER_UNAME} &&\
install -d -m 0755 -o ${USER_UNAME} -g ${USER_GNAME} /home/${USER_UNAME} &&\
chown --changes --silent --no-dereference --recursive \
--from=33:33 ${USER_UID}:${USER_GID} \
/home/${USER_UNAME}
# /.composer \
# /var/run/php-fpm \
# /var/lib/php/sessions \
COPY ./bashrc /home/${USER_UNAME}/.bashrc
COPY ./inputrc /home/${USER_UNAME}/.inputrc
USER ${USER_UNAME}

View File

@ -0,0 +1,4 @@
PS1='\e[36m\e[1mPHP-5.6\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

View File

@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on

View File

@ -0,0 +1,70 @@
FROM php:7.3-fpm
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng-dev \
mariadb-client \
zip \
libzip-dev && \
# docker-php-ext-install -j$(nproc) iconv && \
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \
apt-get install -y imagemagick libmagickwand-dev && \
pecl install imagick && docker-php-ext-enable imagick && \
docker-php-ext-install -j$(nproc) gd && \
docker-php-ext-install pdo_mysql zip && \
docker-php-ext-install opcache && \
docker-php-ext-install bcmath && \
apt-get install -y git vim && \
pecl install redis-4.3.0 && \
pecl install xdebug-2.7.0 && \
docker-php-ext-enable redis xdebug
RUN export COMPOSER_HOME=/usr/local/composer && \
curl -sS https://getcomposer.org/installer \
| php -- --install-dir=/usr/local/bin --filename=composer && \
curl https://drupalconsole.com/installer \
-L -o /usr/local/bin/drupal && \
chmod +x /usr/local/bin/drupal && \
curl https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar \
-L -o /usr/local/bin/drush && \
chmod +x /usr/local/bin/drush
RUN apt-get install -y curl && \
curl -sL https://deb.nodesource.com/setup_11.x | bash - && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && \
apt-get install -y nodejs yarn
RUN apt-get install -y rsyslog
COPY ./rsyslog-drupal.conf /etc/rsyslog.d/drupal.conf
# ENTRYPOINT ["sh", "-c", "service rsyslog start ; tail -f /dev/null"]
COPY ./php-custom.ini /usr/local/etc/php/conf.d/php-custom.ini
# COPY ./php-fpm-custom.conf /usr/local/etc/php-fpm.d/php-fpm-custom.conf
# COPY ./bashrc /root/.bashrc
# COPY ./inputrc /root/.inputrc
ARG USER_UID
ARG USER_UNAME
ARG USER_GID
ARG USER_GNAME
RUN if getent group ${USER_GNAME} ; then groupdel ${USER_GNAME}; fi &&\
groupadd -g ${USER_GID} ${USER_GNAME} &&\
useradd -l -u ${USER_UID} -g ${USER_GNAME} ${USER_UNAME} &&\
install -d -m 0755 -o ${USER_UNAME} -g ${USER_GNAME} /home/${USER_UNAME} &&\
chown --changes --silent --no-dereference --recursive \
--from=33:33 ${USER_UID}:${USER_GID} \
/home/${USER_UNAME}
# /.composer \
# /var/run/php-fpm \
# /var/lib/php/sessions \
COPY ./bashrc /home/${USER_UNAME}/.bashrc
COPY ./inputrc /home/${USER_UNAME}/.inputrc
USER ${USER_UNAME}

View File

@ -0,0 +1,4 @@
PS1='\e[36m\e[1mPHP-7.3\e[0m:\e[90m\w\e[0m\n$ '
bind '"\e[A": history-search-backward'
bind '"\e[B": history-search-forward'

View File

@ -0,0 +1,2 @@
set show-all-if-ambiguous on
set completion-ignore-case on

View File

@ -0,0 +1,9 @@
memory_limit = 8192M
upload_max_filesize = 50M
post_max_size = 50M
max_execution_time = 150
; Log level
; Possible Values: alert, error, warning, notice, debug
; Default Value: notice
log_level = debug

View File

@ -0,0 +1 @@
request_terminate_timeout = 150

View File

@ -0,0 +1 @@
local6.* /var/log/drupal.log

View File

@ -0,0 +1,17 @@
[Unit]
Description=rsyslog
After=docker.service
Requires=docker.service
[Service]
ExecStartPre=-/usr/bin/docker rm %n
ExecStart=/usr/bin/docker run --rm \
--name %n \
-h %H \
jumanjiman/rsyslog
ExecStop=/usr/bin/docker stop %n
RestartSec=5s
Restart=always
[Install]
WantedBy=multi-user.target

68
Makefile Normal file
View File

@ -0,0 +1,68 @@
#!/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_nginx:
docker exec -it popsu_nginx_1 bash
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_1 bash
exec_mysql_d9:
docker exec -it popsu_mysql_d9_1 bash

259
README.md
View File

@ -7,97 +7,286 @@ Popsu powered by druapl 7 in docker environement (nginx, php:5.6-fpm+drush, mar
sudo pacman -S docker docker-compose docker-machine 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 ## Clone this repos
this will clone this repos (main docker environement) and the materio-base drupal 7 source code (without sites/default folder) 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-d7.git 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 ### setup /sites/default/settings.php
```cp -r ressources/default public_html/sites/``` ```
cp -r ressources/d7/settings.php src_d7/sites/default/
cp -r ressources/d9/settings.php src_d9/sites/default/
```
### get the sites/default/files folder ### get the sites/default/files folder
get the files from where you have it and rsync it to public_html/sites/default/files/ 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 ## Mysql
Copy your-sql-dump.sql into ./ressources/db.sql 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 It will be automaticly imported into the mysql container db (only) on the first docker-compose up
## Hosts and reverse proxy ## Hosts and reverse proxy
add to your /etc/hosts : add to your /etc/hosts :
``` ```
127.0.0.1 dev.popsu.archi.fr 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 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 configure your apache vhosts to add a reverse proxy that will redirect the dev.materio.com to our container
``` ```apache
<Virtualhost *:80> <Virtualhost *:80>
ServerName dev.popsu.archi.fr ServerName dev.d7.popsu.archi.fr
ProxyPass / http://127.0.0.1:8880/ ProxyPass / http://127.0.0.1:8880/
ProxyPassReverse / http://127.0.0.1:8880/ ProxyPassReverse / http://127.0.0.1:8880/
ProxyRequests Off 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: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;
</Virtualhost>
<Virtualhost *:80>
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;
</Virtualhost> </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: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;
}
}
``` ```
<Virtualhost *:80>
ServerName dev.phpmyadmin.popsu.archi.fr
ProxyPass / http://127.0.0.1:8881/
ProxyPassReverse / http://127.0.0.1:8881/
ProxyRequests Off
</Virtualhost>
```
## Docker ## 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 ### build
only before the first run (may take some time) only before the first run (may take some time)
``` ```
sudo docker-compose build make build
``` ```
/!\ DO NOT use ```docker-compose build```, it will faile
### run ### run
then each time you want to launch the app then each time you want to launch the app
``` ```
sudo docker-compose up -d make up
``` ```
Be aware that a first up, since the db is empty, it will be populated with your file db.sql. It may take some time depending of your db size. 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.
### loging in ## 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)
``` ```
sudo docker exec -it popsu_php_1 bash docker exec -u 0 -it popsu_php_d9_1 /bin/bash
composer selfupdate --1
```
ctrl+d
```
make exec_php_d9
composer install
``` ```
## Visualize ## Visualize
You can now visit http://dev.popsu.archi.fr on your browser You can now visit http://dev.d7.popsu.archi.fr and http://dev.d9.popsu.archi.fr on your browser
After the first run After the first run
## Coding ## Coding
### drush ### drush
you can access to drush by loging into the php container you can access to drush by loging into the php container
``` ```
sudo docker exec -it popsu_php_1 bash make exec_php_d7
# or
make exec_php_d9
``` ```
once inside the php container in /var/www/html you can use drush as usual once inside the php container in /var/www/html you can use drush as usual
## updateding manualy mysql db
copy your db backup into the mysql container ## Updating code
``` ```
sudo docker cp your-db-file.sql popsu_mysql_1:/root/ 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 log into mysql container
``` ```sh
sudo docker exec -it popsu_php_1 bash 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 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
```
# sources ## Makefile
https://www.ostraining.com/blog/drupal/docker/
http://tech.osteel.me/posts/2017/01/15/how-to-use-docker-for-local-web-development-an-update.html DO NOT use directly docker or docker-compose to run this instance
use make instead like ```make up```
https://mmenozzi.github.io/2016/01/22/php-web-development-with-docker/ ```makefile
#!/usr/bin/make
https://dzone.com/articles/continuous-drupal-maintaining-a-drupal-website-wit 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
```

View File

@ -1,17 +1,31 @@
version: "3.5" version: "3.5"
services: services:
mysql: mysql_d7:
image: mariadb:latest image: mariadb:latest
volumes: volumes:
- db-data:/var/lib/mysql - db-data-d7:/var/lib/mysql
- ./Docker/mysql/mysql.cnf:/etc/mysql/conf.d/custom.cnf:ro - ./Docker/mysql/mysql.cnf:/etc/mysql/conf.d/custom.cnf:ro
- "${DB_IMPORTE_FILE}:/docker-entrypoint-initdb.d/db.sql" - "${DB_IMPORTE_FILE_D7}:/docker-entrypoint-initdb.d/popsu_d7.sql"
networks: networks:
- database - database
environment: environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}" MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "${DB_NAME}" MYSQL_DATABASE: "${DB_NAME_D7}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
mysql_d9:
image: mariadb:latest
volumes:
- db-data-d9:/var/lib/mysql
- ./Docker/mysql/mysql.cnf:/etc/mysql/conf.d/custom.cnf:ro
- "${DB_IMPORTE_FILE_D9}:/docker-entrypoint-initdb.d/popsu_d9.sql"
networks:
- database
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
MYSQL_DATABASE: "${DB_NAME_D9}"
MYSQL_USER: "${DB_USERNAME}" MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}" MYSQL_PASSWORD: "${DB_PASSWORD}"
@ -24,19 +38,40 @@ services:
ports: ports:
- "6379" - "6379"
php: php_d7:
build: ./Docker/php/ build: ./Docker/php-5.6-fpm/
expose: # expose:
- 9000 # - 9000
volumes: volumes:
- php-root-data:/root - php-d7-user-data:/home/${USER_UNAME}
- "${PROJECT_ROOT}:/var/www/html" - "${PROJECT_ROOT_D7}:/var/www/d7"
working_dir: "/var/www/d7"
networks: networks:
- database - database
- server - server
- redis - redis
depends_on: depends_on:
- mysql - mysql_d7
- redis
php_d9:
build: ./Docker/php-7.3-fpm/
# expose:
# - 8999
user: ${USER_UID}:${USER_GID}
volumes:
- php-d9-user-data:/home/${USER_UNAME}
- "${PROJECT_ROOT_D9}:/var/www/d9"
- "${LOG_ROOT}/php:/var/log:rw"
- "${XDEBUG_INI}:/usr/local/etc/php/conf.d/xdebug.ini"
working_dir: "/var/www/d9"
networks:
- database
- redis
- server
depends_on:
- mysql_d9
- redis
phpmyadmin: phpmyadmin:
image: phpmyadmin/phpmyadmin image: phpmyadmin/phpmyadmin
@ -45,26 +80,32 @@ services:
networks: networks:
- database - database
depends_on: depends_on:
- mysql - mysql_d7
- mysql_d9
environment: environment:
PMA_HOST: mysql PMA_HOST: mysql_d7, mysql_d9
nginx: nginx:
build: ./Docker/nginx/ build: ./Docker/nginx/
ports: ports:
- 8880:80 - 8880:80
working_dir: "/var/www"
volumes: volumes:
- "${PROJECT_ROOT}:/var/www/html" - "${PROJECT_ROOT_D7}:/var/www/d7"
- "${PROJECT_ROOT_D9}:/var/www/d9"
- "${LOG_ROOT}:/var/log:rw" - "${LOG_ROOT}:/var/log:rw"
networks: networks:
- server - server
depends_on: depends_on:
- php - php_d7
- php_d9
volumes: volumes:
db-data: db-data-d7:
db-data-d9:
redis-data: redis-data:
php-root-data: php-d7-user-data:
php-d9-user-data:
networks: networks:
database: database:

@ -1 +0,0 @@
Subproject commit a8891db0143cdea55b911f1fc2e04a1e119ede32

View File

@ -1,5 +1,4 @@
<?php <?php
// $Id: default.settings.php,v 1.51 2010/10/11 23:49:48 dries Exp $
/** /**
* @file * @file
@ -23,19 +22,19 @@
* http://www.drupal.org/mysite/test/, the 'settings.php' * http://www.drupal.org/mysite/test/, the 'settings.php'
* is searched in the following directories: * is searched in the following directories:
* *
* 1. sites/www.drupal.org.mysite.test * - sites/www.drupal.org.mysite.test
* 2. sites/drupal.org.mysite.test * - sites/drupal.org.mysite.test
* 3. sites/org.mysite.test * - sites/org.mysite.test
* *
* 4. sites/www.drupal.org.mysite * - sites/www.drupal.org.mysite
* 5. sites/drupal.org.mysite * - sites/drupal.org.mysite
* 6. sites/org.mysite * - sites/org.mysite
* *
* 7. sites/www.drupal.org * - sites/www.drupal.org
* 8. sites/drupal.org * - sites/drupal.org
* 9. sites/org * - sites/org
* *
* 10. sites/default * - sites/default
* *
* If you are installing on a non-standard port number, prefix the * If you are installing on a non-standard port number, prefix the
* hostname with that number. For example, * hostname with that number. For example,
@ -154,6 +153,29 @@
* @endcode * @endcode
* NOTE: MySQL and SQLite's definition of a schema is a database. * NOTE: MySQL and SQLite's definition of a schema is a database.
* *
* Advanced users can add or override initial commands to execute when
* connecting to the database server, as well as PDO connection settings. For
* example, to enable MySQL SELECT queries to exceed the max_join_size system
* variable, and to reduce the database connection timeout to 5 seconds:
*
* @code
* $databases['default']['default'] = array(
* 'init_commands' => array(
* 'big_selects' => 'SET SQL_BIG_SELECTS=1',
* ),
* 'pdo' => array(
* PDO::ATTR_TIMEOUT => 5,
* ),
* );
* @endcode
*
* WARNING: These defaults are designed for database portability. Changing them
* may cause unexpected behavior, including potential data loss.
*
* @see DatabaseConnection_mysql::__construct
* @see DatabaseConnection_pgsql::__construct
* @see DatabaseConnection_sqlite::__construct
*
* Database configuration format: * Database configuration format:
* @code * @code
* $databases['default']['default'] = array( * $databases['default']['default'] = array(
@ -178,15 +200,21 @@
* ); * );
* @endcode * @endcode
*/ */
$databases['default']['default'] = array( $databases = array (
'driver' => 'mysql', 'default' =>
'database' => 'materio_base_d7', array (
'username' => 'root', 'default' =>
'password' => 'materio', array (
'host' => 'mysql', 'database' => 'popsu_d7',
'prefix' => '', 'username' => 'root',
'collation' => 'utf8_general_ci', 'password' => 'popsu',
); 'host' => 'mysql_d7',
'port' => '',
'driver' => 'mysql',
'prefix' => 'dbprefix_',
),
),
);
/** /**
* Access control for update.php script. * Access control for update.php script.
@ -205,10 +233,10 @@ $update_free_access = FALSE;
* Salt for one-time login links and cancel links, form tokens, etc. * Salt for one-time login links and cancel links, form tokens, etc.
* *
* This variable will be set to a random value by the installer. All one-time * This variable will be set to a random value by the installer. All one-time
* login links will be invalidated if the value is changed. Note that this * login links will be invalidated if the value is changed. Note that if your
* variable must have the same value on every web server. If this variable is * site is deployed on a cluster of web servers, you must ensure that this
* empty, a hash of the serialized database credentials will be used as a * variable has the same value on each server. If this variable is empty, a hash
* fallback salt. * of the serialized database credentials will be used as a fallback salt.
* *
* For enhanced security, you may set this variable to a value using the * For enhanced security, you may set this variable to a value using the
* contents of a file outside your docroot that is never saved together * contents of a file outside your docroot that is never saved together
@ -218,7 +246,7 @@ $update_free_access = FALSE;
* $drupal_hash_salt = file_get_contents('/home/example/salt.txt'); * $drupal_hash_salt = file_get_contents('/home/example/salt.txt');
* *
*/ */
$drupal_hash_salt = ''; $drupal_hash_salt = '0Zxsn2w4iHq1rq-nN7QvU-qaoGU8MaycbJciaHqLJGk';
/** /**
* Base URL (optional). * Base URL (optional).
@ -240,7 +268,7 @@ $drupal_hash_salt = '';
* It is not allowed to have a trailing slash; Drupal will add it * It is not allowed to have a trailing slash; Drupal will add it
* for you. * for you.
*/ */
// $base_url = 'http://dev.materio.com'; // NO trailing slash! # $base_url = 'http://www.example.com'; // NO trailing slash!
/** /**
* PHP settings: * PHP settings:
@ -248,7 +276,7 @@ $drupal_hash_salt = '';
* To see what PHP settings are possible, including whether they can be set at * To see what PHP settings are possible, including whether they can be set at
* runtime (by using ini_set()), read the PHP documentation: * runtime (by using ini_set()), read the PHP documentation:
* http://www.php.net/manual/en/ini.list.php * http://www.php.net/manual/en/ini.list.php
* See drupal_initialize_variables() in includes/bootstrap.inc for required * See drupal_environment_initialize() in includes/bootstrap.inc for required
* runtime settings and the .htaccess file for non-runtime settings. Settings * runtime settings and the .htaccess file for non-runtime settings. Settings
* defined there should not be duplicated here so as to avoid conflict issues. * defined there should not be duplicated here so as to avoid conflict issues.
*/ */
@ -290,13 +318,14 @@ ini_set('session.cookie_lifetime', 2000000);
/** /**
* Drupal automatically generates a unique session cookie name for each site * Drupal automatically generates a unique session cookie name for each site
* based on on its full domain name. If you have multiple domains pointing at * based on its full domain name. If you have multiple domains pointing at the
* the same Drupal site, you can either redirect them all to a single domain * same Drupal site, you can either redirect them all to a single domain (see
* (see comment in .htaccess), or uncomment the line below and specify their * comment in .htaccess), or uncomment the line below and specify their shared
* shared base domain. Doing so assures that users remain logged in as they * base domain. Doing so assures that users remain logged in as they cross
* cross between your various domains. * between your various domains. Make sure to always start the $cookie_domain
* with a leading dot, as per RFC 2109.
*/ */
$cookie_domain = 'dev.materio.com'; # $cookie_domain = '.example.com';
/** /**
* Variable overrides: * Variable overrides:
@ -315,7 +344,7 @@ $cookie_domain = 'dev.materio.com';
* - anonymous: Defines the human-readable name of anonymous users. * - anonymous: Defines the human-readable name of anonymous users.
* Remove the leading hash signs to enable. * Remove the leading hash signs to enable.
*/ */
$conf['site_name'] = "materiO'"; # $conf['site_name'] = 'My Drupal site';
# $conf['theme_default'] = 'garland'; # $conf['theme_default'] = 'garland';
# $conf['anonymous'] = 'Visitor'; # $conf['anonymous'] = 'Visitor';
@ -330,42 +359,50 @@ $cookie_domain = 'dev.materio.com';
# $conf['maintenance_theme'] = 'bartik'; # $conf['maintenance_theme'] = 'bartik';
/** /**
* Enable this setting to determine the correct IP address of the remote * Reverse Proxy Configuration:
* client by examining information stored in the X-Forwarded-For headers. *
* X-Forwarded-For headers are a standard mechanism for identifying client * Reverse proxy servers are often used to enhance the performance
* systems connecting through a reverse proxy server, such as Squid or
* Pound. Reverse proxy servers are often used to enhance the performance
* of heavily visited sites and may also provide other site caching, * of heavily visited sites and may also provide other site caching,
* security or encryption benefits. If this Drupal installation operates * security, or encryption benefits. In an environment where Drupal
* behind a reverse proxy, this setting should be enabled so that correct * is behind a reverse proxy, the real IP address of the client should
* IP address information is captured in Drupal's session management, * be determined such that the correct client IP address is available
* logging, statistics and access management systems; if you are unsure * to Drupal's logging, statistics, and access management systems. In
* about this setting, do not have a reverse proxy, or Drupal operates in * the most simple scenario, the proxy server will add an
* a shared hosting environment, this setting should remain commented out. * X-Forwarded-For header to the request that contains the client IP
* address. However, HTTP headers are vulnerable to spoofing, where a
* malicious client could bypass restrictions by setting the
* X-Forwarded-For header directly. Therefore, Drupal's proxy
* configuration requires the IP addresses of all remote proxies to be
* specified in $conf['reverse_proxy_addresses'] to work correctly.
*
* Enable this setting to get Drupal to determine the client IP from
* the X-Forwarded-For header (or $conf['reverse_proxy_header'] if set).
* If you are unsure about this setting, do not have a reverse proxy,
* or Drupal operates in a shared hosting environment, this setting
* should remain commented out.
*
* In order for this setting to be used you must specify every possible
* reverse proxy IP address in $conf['reverse_proxy_addresses'].
* If a complete list of reverse proxies is not available in your
* environment (for example, if you use a CDN) you may set the
* $_SERVER['REMOTE_ADDR'] variable directly in settings.php.
* Be aware, however, that it is likely that this would allow IP
* address spoofing unless more advanced precautions are taken.
*/ */
# $conf['reverse_proxy'] = TRUE; # $conf['reverse_proxy'] = TRUE;
/** /**
* Set this value if your proxy server sends the client IP in a header other * Specify every reverse proxy IP address in your environment.
* than X-Forwarded-For. * This setting is required if $conf['reverse_proxy'] is TRUE.
*
* The "X-Forwarded-For" header is a comma+space separated list of IP addresses,
* only the last one (the left-most) will be used.
*/
# $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
/**
* reverse_proxy accepts an array of IP addresses.
*
* Each element of this array is the IP address of any of your reverse
* proxies. Filling this array Drupal will trust the information stored
* in the X-Forwarded-For headers only if Remote IP address is one of
* these, that is the request reaches the web server from one of your
* reverse proxies. Otherwise, the client could directly connect to
* your web server spoofing the X-Forwarded-For headers.
*/ */
# $conf['reverse_proxy_addresses'] = array('a.b.c.d', ...); # $conf['reverse_proxy_addresses'] = array('a.b.c.d', ...);
/**
* Set this value if your proxy server sends the client IP in a header
* other than X-Forwarded-For.
*/
# $conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
/** /**
* Page caching: * Page caching:
* *
@ -377,8 +414,7 @@ $cookie_domain = 'dev.materio.com';
* the cache. If the site has mostly anonymous users except a few known * the cache. If the site has mostly anonymous users except a few known
* editors/administrators, the Vary header can be omitted. This allows for * editors/administrators, the Vary header can be omitted. This allows for
* better caching in HTTP proxies (including reverse proxies), i.e. even if * better caching in HTTP proxies (including reverse proxies), i.e. even if
* clients send different cookies, they still get content served from the cache * clients send different cookies, they still get content served from the cache.
* if aggressive caching is enabled and the minimum cache time is non-zero.
* However, authenticated users should access the site directly (i.e. not use an * However, authenticated users should access the site directly (i.e. not use an
* HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid * HTTP proxy, and bypass the reverse proxy if one is used) in order to avoid
* getting cached pages from the proxy. * getting cached pages from the proxy.
@ -437,6 +473,42 @@ $cookie_domain = 'dev.materio.com';
# 'a.b.c.d', # 'a.b.c.d',
# ); # );
/**
* Fast 404 pages:
*
* Drupal can generate fully themed 404 pages. However, some of these responses
* are for images or other resource files that are not displayed to the user.
* This can waste bandwidth, and also generate server load.
*
* The options below return a simple, fast 404 page for URLs matching a
* specific pattern:
* - 404_fast_paths_exclude: A regular expression to match paths to exclude,
* such as images generated by image styles, or dynamically-resized images.
* If you need to add more paths, you can add '|path' to the expression.
* - 404_fast_paths: A regular expression to match paths that should return a
* simple 404 page, rather than the fully themed 404 page. If you don't have
* any aliases ending in htm or html you can add '|s?html?' to the expression.
* - 404_fast_html: The html to return for simple 404 pages.
*
* Add leading hash signs if you would like to disable this functionality.
*/
$conf['404_fast_paths_exclude'] = '/\/(?:styles)\//';
$conf['404_fast_paths'] = '/\.(?:txt|png|gif|jpe?g|css|js|ico|swf|flv|cgi|bat|pl|dll|exe|asp)$/i';
$conf['404_fast_html'] = '<html xmlns="http://www.w3.org/1999/xhtml"><head><title>404 Not Found</title></head><body><h1>Not Found</h1><p>The requested URL "@path" was not found on this server.</p></body></html>';
/**
* By default, fast 404s are returned as part of the normal page request
* process, which will properly serve valid pages that happen to match and will
* also log actual 404s to the Drupal log. Alternatively you can choose to
* return a 404 now by uncommenting the following line. This will reduce server
* load, but will cause even valid pages that happen to match the pattern to
* return 404s, rather than the actual page. It will also prevent the Drupal
* system log entry. Ensure you understand the effects of this before enabling.
*
* To enable this functionality, remove the leading hash sign below.
*/
# drupal_fast_404();
/** /**
* Authorized file system operations: * Authorized file system operations:
* *
@ -452,32 +524,3 @@ $cookie_domain = 'dev.materio.com';
* Remove the leading hash signs to disable. * Remove the leading hash signs to disable.
*/ */
# $conf['allow_authorize_operations'] = FALSE; # $conf['allow_authorize_operations'] = FALSE;
// $conf['cache'] = 0;
$conf['preprocess_js'] = 0;
$conf['preprocess_css'] = 0;
$conf['session_limit_max'] = 10;
$conf['maillog_send'] = 0;
$conf['enforce_limit'] = 'no';
$conf['search_api_solr_overrides'] = array(
'materio_solr3_en' => array(
'name' => t('Materio EN Solr Server (Overridden)'),
'options' => array(
'host' => 'solr',
'port' => 8983,
'path' => '/solr/materio_base_en',
),
),
'materio_solr3_fr' => array(
'name' => t('Materio FR Solr Server (Overridden)'),
'options' => array(
'host' => 'solr',
'port' => 8983,
'path' => '/solr/materio_base_fr',
),
),
);

18
ressources/xdebug.ini Normal file
View File

@ -0,0 +1,18 @@
[xdebug]
xdebug.remote_enable=1
;Should use host.docker.internal but not working on linux
xdebug.remote_host=172.20.0.1
;Not working on docker context
xdebug.remote_connect_back=0
;9000 is already bound by php-fpm
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_autostart=true
; ?=XDEBUG_SESSION_START=1
;Log file is mounted on volume so you can follow it
xdebug.remote_log=/var/log/xdebug-error.log
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0
xdebug.profiler_output_dir=/var/log/
; Example: http://localhost:8080/test?XDEBUG_PROFILE=1

1
src_d7 Submodule

@ -0,0 +1 @@
Subproject commit be8ccebfacf2255f28bc0f5a192272ad87d115d6

1
src_d9 Submodule

@ -0,0 +1 @@
Subproject commit baea2a05ddd02a55f06f9690238a79a63a2f691c