Skip to content

Commit 12c6956

Browse files
committed
Allow to run multiple dolibarr instance at once
1 parent 8b24362 commit 12c6956

File tree

3 files changed

+45
-38
lines changed

3 files changed

+45
-38
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
dolibarr
22
.idea
3-
.env
3+
.env.*

docker/docker-compose.yml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ version: '3'
33
services:
44
db:
55
image: 'mariadb:${MARIADB_VERSION:-10.7.3-focal}'
6-
container_name: dolidev_db
76
ports:
87
- '${FORWARD_DB_PORT:-3306}:3306'
98
environment:
@@ -14,8 +13,8 @@ services:
1413
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
1514
volumes:
1615
- db:/var/lib/mysql
17-
- "/etc/timezone:/etc/timezone:ro"
18-
- "/etc/localtime:/etc/localtime:ro"
16+
- /etc/timezone:/etc/timezone:ro
17+
- /etc/localtime:/etc/localtime:ro
1918
networks:
2019
- dolibarr
2120
healthcheck:
@@ -25,26 +24,23 @@ services:
2524

2625
php:
2726
build: php
28-
container_name: dolidev_php
2927
volumes:
30-
- ../dolibarr:/var/www/html:rw
31-
- ../dolibarr/documents:/var/documents:rw
28+
- '../${DOLIBARR_FOLDER:-dolibarr}:/var/www/html:rw'
29+
- '../${DOLIBARR_FOLDER:-dolibarr}/documents:/var/documents:rw'
3230
networks:
3331
- dolibarr
3432

3533
web:
3634
build: nginx
37-
container_name: dolidev_web
3835
ports:
3936
- '${FORWARD_WEB_PORT:-80}:80'
4037
volumes:
41-
- ../dolibarr:/var/www/html:rw
38+
- '../${DOLIBARR_FOLDER:-dolibarr}:/var/www/html:rw'
4239
networks:
4340
- dolibarr
4441

4542
phpmyadmin:
4643
image: phpmyadmin/phpmyadmin:latest
47-
container_name: dolidev_pma
4844
environment:
4945
PMA_HOST: db
5046
ports:
@@ -54,7 +50,6 @@ services:
5450

5551
mailhog:
5652
image: mailhog/mailhog:v1.0.1
57-
container_name: dolidev_mailhog
5853
ports:
5954
- '${FORWARD_MAILHOG_PORT:-8025}:8025'
6055
networks:

dolidev

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ up_dolidev() {
2525
configure_dolibarr
2626

2727
echo "Starting the Dolibarr instance."
28-
(source ./.env && cd docker && docker-compose up -d --build)
28+
# shellcheck disable=SC1090
29+
(source "./$ENV_FILE" && docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" up -d --build)
2930

3031
if [[ "$SEED" -eq 1 ]]; then
3132
echo "Seeding the database."
@@ -63,76 +64,87 @@ down_dolidev() {
6364

6465
if [ "$RM" -eq 0 ]; then
6566
echo "Stopping the Dolibarr instance."
66-
(cd docker && docker-compose down)
67+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" down
6768
else
6869
echo "Removing the Dolibarr instance."
69-
(cd docker && docker-compose down)
70+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" down
7071

7172
echo "Wipping files on disk."
7273
rm -rf dolibarr
7374
fi
7475
}
7576

7677
install_dolibarr() {
77-
if [ -d dolibarr ]; then
78+
if [ -d "$DOLIBARR_FOLDER" ]; then
7879
echo "Updating existing Dolibarr instance to v$1"
7980
(
80-
cd dolibarr
81+
cd "$DOLIBARR_FOLDER"
8182
if [ "$2" -eq 1 ]; then
8283
git pull --rebase --autostash
8384
fi
8485
git checkout "$1"
8586
)
8687
else
87-
echo "Installing Dolibarr v$1 from $DOLIBARR_URL into ./dolibarr"
88-
git clone -b "$1" "$DOLIBARR_URL" dolibarr
88+
echo "Installing Dolibarr v$1 from $DOLIBARR_URL into ./$DOLIBARR_FOLDER"
89+
git clone -b "$1" "$DOLIBARR_URL" "$DOLIBARR_FOLDER"
8990
fi
9091

9192
# Create documents folder if missing
9293
mkdir -p dolibarr/documents
9394
}
9495

9596
configure_dolibarr() {
96-
cp dolibarr/htdocs/conf/conf.php.example dolibarr/htdocs/conf/conf.php
97-
98-
$SED_CMD -i "s/dolibarr_main_url_root=''/dolibarr_main_url_root='http:\/\/dolibarr.local'/g" dolibarr/htdocs/conf/conf.php
99-
$SED_CMD -i "s/dolibarr_main_document_root=''/dolibarr_main_document_root='\/var\/www\/html\/htdocs'/g" dolibarr/htdocs/conf/conf.php
100-
$SED_CMD -i "s/dolibarr_main_data_root=''/dolibarr_main_data_root='\/var\/documents'/g" dolibarr/htdocs/conf/conf.php
101-
$SED_CMD -i "s/dolibarr_main_db_host=''/dolibarr_main_db_host='db'/g" dolibarr/htdocs/conf/conf.php
102-
$SED_CMD -i "s/dolibarr_main_db_name=''/dolibarr_main_db_name='$DB_DATABASE'/g" dolibarr/htdocs/conf/conf.php
103-
$SED_CMD -i "s/dolibarr_main_db_user=''/dolibarr_main_db_user='$DB_USERNAME'/g" dolibarr/htdocs/conf/conf.php
104-
$SED_CMD -i "s/dolibarr_main_db_pass=''/dolibarr_main_db_pass='$DB_PASSWORD'/g" dolibarr/htdocs/conf/conf.php
105-
$SED_CMD -i "s/dolibarr_main_db_type=''/dolibarr_main_db_type='mysqli'/g" dolibarr/htdocs/conf/conf.php
106-
$SED_CMD -i "s/dolibarr_main_db_type=''/dolibarr_main_db_type='mysqli'/g" dolibarr/htdocs/conf/conf.php
107-
$SED_CMD -i "s#//\$dolibarr_main_url_root_alt=#\$dolibarr_main_url_root_alt=#g" dolibarr/htdocs/conf/conf.php
97+
cp "$DOLIBARR_FOLDER/htdocs/conf/conf.php.example" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
98+
99+
$SED_CMD -i "s/dolibarr_main_url_root=''/dolibarr_main_url_root='http:\/\/dolibarr.local'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
100+
$SED_CMD -i "s/dolibarr_main_document_root=''/dolibarr_main_document_root='\/var\/www\/html\/htdocs'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
101+
$SED_CMD -i "s/dolibarr_main_data_root=''/dolibarr_main_data_root='\/var\/documents'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
102+
$SED_CMD -i "s/dolibarr_main_db_host=''/dolibarr_main_db_host='db'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
103+
$SED_CMD -i "s/dolibarr_main_db_name=''/dolibarr_main_db_name='$DB_DATABASE'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
104+
$SED_CMD -i "s/dolibarr_main_db_user=''/dolibarr_main_db_user='$DB_USERNAME'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
105+
$SED_CMD -i "s/dolibarr_main_db_pass=''/dolibarr_main_db_pass='$DB_PASSWORD'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
106+
$SED_CMD -i "s/dolibarr_main_db_type=''/dolibarr_main_db_type='mysqli'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
107+
$SED_CMD -i "s/dolibarr_main_db_type=''/dolibarr_main_db_type='mysqli'/g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
108+
$SED_CMD -i "s#//\$dolibarr_main_url_root_alt=#\$dolibarr_main_url_root_alt=#g" "$DOLIBARR_FOLDER/htdocs/conf/conf.php"
108109
}
109110

110111
seed_dolibarr() {
111112
# Recreate the database first
112-
docker exec --interactive dolidev_db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "DROP DATABASE IF EXISTS $DB_DATABASE"
113-
docker exec --interactive dolidev_db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "CREATE DATABASE $DB_DATABASE"
113+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec --interactive db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "DROP DATABASE IF EXISTS $DB_DATABASE"
114+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec --interactive db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" -e "CREATE DATABASE $DB_DATABASE"
114115

115116
# Run the seeders
116-
docker exec --interactive dolidev_db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" <"./dolibarr/dev/initdemo/mysqldump_dolibarr_$1.0.sql"
117-
docker exec --interactive dolidev_db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" <"./docker/seed.sql"
117+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec -T db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" <"./$DOLIBARR_FOLDER/dev/initdemo/mysqldump_dolibarr_$1.0.sql"
118+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec -T db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" <"./docker/seed.sql"
118119

119120
# Set password as 'password' for all users
120-
docker exec --interactive dolidev_db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" --execute "UPDATE llx_user SET pass = \"password\" WHERE 1"
121+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec -T db mysql -u"$DB_USERNAME" -p"$DB_PASSWORD" "$DB_DATABASE" --execute "UPDATE llx_user SET pass = \"password\" WHERE 1"
121122
}
122123

123124
run_compose() {
124-
(cd docker && docker-compose "$@")
125+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" "$@"
125126
}
126127

127128
run_shell() {
128-
(cd docker && docker-compose exec php sh)
129+
docker-compose --project-directory docker -p "dolidev_$DOLIBARR_FOLDER" exec php sh
129130
}
130131

131132
###
132133
### Main ###
133134
###
134135

135-
source .env
136+
# Determinate which env file to use
137+
if [ -z ${2+x} ]; then
138+
ENV_FILE=".env"
139+
DOLIBARR_FOLDER="dolibarr"
140+
else
141+
ENV_FILE=".env.$2"
142+
DOLIBARR_FOLDER="$(echo "$2" | cut -d'.' -f3)"
143+
fi
144+
export DOLIBARR_FOLDER
145+
146+
# shellcheck disable=SC1090
147+
source "$ENV_FILE"
136148

137149
GETOPT_CMD="${GETOPT_CMD:-getopt}"
138150
SED_CMD="${SED_CMD:-sed}"

0 commit comments

Comments
 (0)