282 lines
7.1 KiB
Markdown
282 lines
7.1 KiB
Markdown
|
|
# Caravane des ruralité Docker Environement (drupal api + vuejs client)
|
|
Caravane des ruralités powered by druapl 10 in docker environement (nginx, php:8.3-fpm+drush, mysql, phpmyadmin, redis, npm)
|
|
|
|
## 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), the drupal 9 based api source code (without sites/default folder nor mysq ddb) and the vuejs app source code.
|
|
|
|
```
|
|
git clone --recursive -o figli https://figureslibres.io/gitea/bachir/docker-caravane.git
|
|
```
|
|
|
|
submodules :
|
|
- https://figureslibres.io/gitea/bachir/drupal-caravane
|
|
|
|
|
|
## touch log file
|
|
```
|
|
touch log/nginx/error.log
|
|
touch log/nginx/caravane/error.log
|
|
```
|
|
|
|
### setup /sites/default/settings.php
|
|
|
|
```cp -r ressources/api/* src/web/sites/default/```
|
|
|
|
### get the sites/default/salt.txt file (if you don't have it, you don't)
|
|
|
|
### get the sites/default/files folder
|
|
rsync the files from you know where (if you don't, you don't) to api/src/web/sites/default/files/
|
|
|
|
<!-- ### xdebug
|
|
on ```ressources/xdebug.ini``` edit the ```xdebug.remote_host``` ip to your host locale ip (e.g. : 192.168.0.23) (or once the docker is started to the host ip from the container point of vu e.g. 172.21.0.1) -->
|
|
|
|
## Mysql
|
|
Copy your-sql-dump.sql into ./ressources/caravane.sql
|
|
It will be automaticly imported into the mysql container db (only) on the first ```make up```
|
|
|
|
## Hosts and reverse proxy
|
|
|
|
add to your /etc/hosts :
|
|
```
|
|
127.0.0.1 dev.caravane.fr
|
|
127.0.0.1 dev.phpmyadmin.caravane.fr
|
|
```
|
|
configure your vhosts to add a reverse proxy that will redirect the dev.caravane.fr to our container
|
|
|
|
Apache
|
|
```apache
|
|
<Virtualhost *:80>
|
|
ServerName dev.caravane.fr
|
|
ProxyPass / http://127.0.0.1:8990/
|
|
ProxyPassReverse / http://127.0.0.1:8990/
|
|
ProxyRequests Off
|
|
ProxyPreserveHost On
|
|
proxy_buffer_size 128k;
|
|
proxy_buffers 4 256k;
|
|
proxy_busy_buffers_size 256k;
|
|
</Virtualhost>
|
|
```
|
|
```apache
|
|
<Virtualhost *:80>
|
|
ServerName dev.phpmyadmin.caravane.fr
|
|
ProxyPass / http://127.0.0.1:8991/
|
|
ProxyPassReverse / http://127.0.0.1:8991/
|
|
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.caravane.fr;
|
|
|
|
access_log off;
|
|
error_log /var/log/nginx/caravane/error.log error;
|
|
|
|
client_max_body_size 100m;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8990;
|
|
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.caravane.com;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8991;
|
|
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
|
|
|
|
### 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 file db.sql. It may take some time depending of your db size.
|
|
|
|
## Drupal Composer install
|
|
Only at first up, finish to install drupal composer dependencies
|
|
```
|
|
make exec_php
|
|
composer install
|
|
```
|
|
|
|
## Visualize
|
|
You can now visit http://dev.caravane.fr on your browser
|
|
|
|
## Coding
|
|
### drush
|
|
you can access to drush by loging into the php container
|
|
```
|
|
make exec_php
|
|
```
|
|
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
|
|
git submodule update --checkout src/
|
|
make maj_config
|
|
```
|
|
|
|
## Updating manualy mysql db
|
|
copy your db backup into the mysql container
|
|
```sh
|
|
sudo docker cp your-db-file.sql caravane_mysql_1:/root/
|
|
```
|
|
log into mysql container
|
|
```sh
|
|
make exec_mysql
|
|
```
|
|
once inside the mysql container you can use mysql command to drop then create and load the db with your file
|
|
```
|
|
mysql -uroot -pcaravane
|
|
> drop database caravane;
|
|
> create database caravane;
|
|
> exit;
|
|
mysql -uroot -pcaravane caravane < 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)
|
|
|
|
buildncphp:
|
|
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) php
|
|
|
|
buildnginx:
|
|
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) nginx
|
|
|
|
buildncnginx:
|
|
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) nginx
|
|
|
|
downbuildup: down build up
|
|
|
|
up:
|
|
docker-compose up -d
|
|
|
|
ps:
|
|
docker-compose ps
|
|
|
|
logs:
|
|
docker-compose logs -f
|
|
|
|
maj_config: crd composer_install updb cim cr
|
|
|
|
crd:
|
|
docker exec caravane-php-1 /bin/bash -c "drush cache-clear drush"
|
|
|
|
cr:
|
|
docker exec caravane-php-1 /bin/bash -c "drush cr"
|
|
|
|
updb:
|
|
docker exec caravane-php-1 /bin/bash -c "drush updb -y"
|
|
|
|
cim:
|
|
docker exec caravane-php-1 /bin/bash -c "drush config-import -y"
|
|
|
|
composer_install:
|
|
docker exec caravane-php-1 /bin/bash -c "composer install --no-dev"
|
|
|
|
down:
|
|
docker-compose down
|
|
|
|
exec_php:
|
|
docker exec -it caravane-php-1 bash
|
|
|
|
restart_php:
|
|
docker-compose restart php
|
|
|
|
exec_mysql:
|
|
docker exec -it caravane-mysql-1 bash
|
|
|
|
restart_nginx:
|
|
docker-compose restart nginx
|
|
|
|
dump_db:
|
|
docker exec caravane-mysql-1 sh -c 'exec mysqldump -uroot -pcaravane caravane' > ./ressources/caravane-$(DATE_NOW)-local.sql
|
|
|
|
```
|