6.3 KiB
instal docker and drupal
Clone this repos
clone a older docker of a similar project
git clone -o gogs gogs@figureslibres.io:bachir/docker-popsu.git
or download docker folder from gogs
Change name and old project occurences
open folder in Vscodium and :
change folder name
change occurence in Readme (ctrl + D pour sélectionner tout en même temps)
dossier Docker: php mettre bonne version
Docker-compose.yml
Makefile
.env (project name donne le nom aux containers)
docker > nginx > default.conf
xdebug
copy ressources/xdebug.ini.exemple to ressources/xdebug.ini
git
remove old folder git
rm -rf .git
rm .gitmodules
create new git repositorie
git init
git add .
git commit -m 'first commit'
git remote add origin https://figureslibres.io/gogs/ouidade/docker-training.git
git push -u origin master
Hosts and reverse proxy
add to your /etc/hosts :
127.0.0.1 dev.training.fr
127.0.0.1 dev.phpmyadmin.training.fr
configure your vhosts to add a reverse proxy that will redirect the dev.training.fr to our container
create new file, dev.training.fr.conf, in /etc/nginx/sites-available
server {
listen 80;
server_name dev.training.fr;
access_log off;
error_log /var/log/nginx/training/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.training.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;
}
}
sudo ln -s /etc/nginx/sites-available/dev.training.fr.conf /etc/nginx/sites-enabled
sudo nginx -t all should be ok
sudo systemctl restart nginx
build docker
make build
make up
make ps
instal drupal with composer
cd public_html
composer create-project drupal/recommended-project:^9.5 .
clone this profile into profiles folder
cd profiles
git clone -o figli https://figureslibres.io/gogs/bachir/drupal-starterkit-profile.git
include the profile's composer file to the main drupal's composer file
install composer-merge-plugin
composer require wikimedia/composer-merge-plugin
then in main drupal's composer.js file add this in extra
"extra": {
...
"merge-plugin": {
"include": [
"web/profiles/d8-starterkit-profile/composer.json"
],
"recurse": true,
"replace": false,
"merge-extra": true
}
...
}
install the profile's merged dependencies with composer
cd ../ composer update
sites/default setup
mkdir -p web/sites/default/files
cp web/sites/default/default.settings.php web/sites/default/settings.php
in docker exit container php and re-log as root in php container
docker exec -u 0 -it training-php-1 bash
then aply changes
chgrp -R www-data web/sites/default/files
chgrp -R www-data web/sites/default/settings.php
chmod g+r web/sites/default/files
chmod g+r web/sites/default/settings.php
exit container php as root ctrl + D
install database with install drupal on navigator
choose profile figli starter kit
for set up database use info in .env file (for work localserver only passwords very basic, be carefull if on line)
advanced options : hosts : mysql
in dump databse there will be files but also modules config
git the drupal (src folder)
git init
create a .gitignore file
# Ignore directories generated by Composer
/drush/contrib/
/vendor/
/web/core/
/web/modules/contrib/
/web/themes/contrib/
/web/profiles/contrib/
/web/libraries/
composer.lock
# Ignore sensitive information
/web/sites/*/settings.php
/web/sites/*/settings.local.php
/web/sites/*/services*.yml
# Ignore Drupal's file directory
/web/sites/*/files/
# Ignore SimpleTest multi-site environment.
/web/sites/simpletest
# Ignore files generated by PhpStorm
/.idea/
# Ignore .env files as they are personal
/.env
# npm
node_modules/
*.patch
/.csslintrc
/.eslintrc.json
/.ht.router.php
/.htaccess
/INSTALL.txt
/README.txt
/autoload.php
/example.gitignore
/index.php
/robots.txt
/update.php
/web.config
/web/.vscode/*
git status
git add .
remove file D8-starterit-profile from the git index in order to add it as a submodule.
git reset web/profiles/d8-starterkit-profile
add submodule
git submodule add https://figureslibres.io/gogs/bachir/d8-starterkit-profile.git web/profiles/d8-starterkit-profile
git commit -m "first drupal instal working"
Create new repository on gogs, for durpal then
git remote add origin https://figureslibres.io/gogs/ouidade/drupal-training.git
git push origin master
in docker, add in src folder the submodule drupal you just created
git submodule add https://figureslibres.io/gogs/ouidade/drupal-training.git src
then
git add .
git commit -m "added drupal submodule"
git push origin master
check drush
drush st
drush cr
check settings files
create file services.yml in src/web/sites/default (can copy from previous site)
in settings.php
if (file_exists($app_root . '/' . $site_path . '/settings.local.php')) {
include $app_root . '/' . $site_path . '/settings.local.php';
}
$databases['default']['default'] = array (
....
);
$settings['config_sync_directory'] = '../config/sync';
so the config databse is stored in a folder config/sync not in web, and so not shared online.
create folder config/sync at the root of your site (src)
export config
drush cst to see config status
drush cex -y to export all that's in database in config/sync
git config
to add enable new module already in drupal core
drush en module_name
and then don't forget to export config drush cex and to git