forked from Wavyzz/dolibarr-docker
Compare commits
53 Commits
arm64-supp
...
alert-auto
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4fe0911e9c | ||
|
|
91f081275b | ||
|
|
7bf9ab0915 | ||
|
|
a64cc0ad8e | ||
|
|
db61b71bbc | ||
|
|
0f516be5bb | ||
|
|
e88161936d | ||
|
|
18f0be8fca | ||
|
|
aee09b3d80 | ||
|
|
b866c9e801 | ||
|
|
53bbc94737 | ||
|
|
2457400291 | ||
|
|
f5d1437e80 | ||
|
|
a2c062fd6f | ||
|
|
22bc912f2c | ||
|
|
c478c416f3 | ||
|
|
c1a21c73c7 | ||
|
|
2fe060f2f2 | ||
|
|
6947dbed67 | ||
|
|
b1f82d1c56 | ||
|
|
d706d44d1b | ||
|
|
dfe5c21f8b | ||
|
|
f7d6f80621 | ||
|
|
0efa6f9944 | ||
|
|
4e8e27245a | ||
|
|
629a7e2b44 | ||
|
|
bbea47b769 | ||
|
|
c1fe0435e3 | ||
|
|
84b04ebe5f | ||
|
|
dd847c2762 | ||
|
|
72bc6dcf65 | ||
|
|
c220568b9e | ||
|
|
188b2a0802 | ||
|
|
a82809a96f | ||
|
|
f018454034 | ||
|
|
62bb6c96d3 | ||
|
|
7ffb658bba | ||
|
|
2f6fbf529b | ||
|
|
ae91dcc533 | ||
|
|
e375482a5f | ||
|
|
87f1739eb4 | ||
|
|
1145f7f733 | ||
|
|
4b59c8ee84 | ||
|
|
ed247ccba0 | ||
|
|
70b56b2840 | ||
|
|
e5734631b8 | ||
|
|
926e117ae8 | ||
|
|
1e28512c1e | ||
|
|
31ab11df56 | ||
|
|
0de3ce209b | ||
|
|
2a8ff12caf | ||
|
|
d9abbb5ac1 | ||
|
|
881a2a5fd3 |
51
.github/build.yml.template
vendored
Normal file
51
.github/build.yml.template
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
# This file is generated automatically when running './update.sh'
|
||||
# Please do not edit it directly!
|
||||
# Instead perform any modifications in .github/build.yml.template
|
||||
|
||||
name: build
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
on:
|
||||
# can run job manually
|
||||
workflow_dispatch:
|
||||
# Run once a week
|
||||
schedule:
|
||||
- cron: '0 0 * * 6'
|
||||
|
||||
jobs:
|
||||
build-docker-images:
|
||||
strategy:
|
||||
matrix:
|
||||
dolibarr_version: [ %DOLIBARR_VERSIONS% ]
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_HUB_PASSWORD }}
|
||||
- uses: docker/setup-qemu-action@v3
|
||||
- uses: docker/setup-buildx-action@v3
|
||||
- env:
|
||||
DOCKER_BUILD: 1
|
||||
DOCKER_PUSH: 1
|
||||
run: |
|
||||
./update.sh ${{ matrix.dolibarr_version }}
|
||||
|
||||
update-readme:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: |
|
||||
echo secrets.DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
docker run --rm -t \
|
||||
-v $(pwd):/src \
|
||||
-e DOCKER_USER=${{ secrets.DOCKER_HUB_USERNAME }} \
|
||||
-e DOCKER_PASS=${{ secrets.DOCKER_HUB_PASSWORD }} \
|
||||
-e PUSHRM_PROVIDER=dockerhub \
|
||||
-e PUSHRM_FILE=/src/README.md \
|
||||
-e PUSHRM_SHORT='Docker image for Dolibarr ERP CRM Open source web suite.' \
|
||||
-e PUSHRM_TARGET=docker.io/dolibarr/dolibarr \
|
||||
-e PUSHRM_DEBUG=1 \
|
||||
chko/docker-pushrm:1
|
||||
14
.github/workflows/build.yml
vendored
14
.github/workflows/build.yml
vendored
@@ -1,4 +1,11 @@
|
||||
# This file is generated automatically when running './update.sh'
|
||||
# Please do not edit it directly!
|
||||
# Instead perform any modifications in .github/build.yml.template
|
||||
|
||||
name: build
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
on:
|
||||
# can run job manually
|
||||
workflow_dispatch:
|
||||
@@ -8,6 +15,9 @@ on:
|
||||
|
||||
jobs:
|
||||
build-docker-images:
|
||||
strategy:
|
||||
matrix:
|
||||
dolibarr_version: [ 15.0.3, 16.0.5, 17.0.4, 18.0.6, 19.0.4, 20.0.4, 21.0.1, develop ]
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -21,14 +31,14 @@ jobs:
|
||||
DOCKER_BUILD: 1
|
||||
DOCKER_PUSH: 1
|
||||
run: |
|
||||
./update.sh
|
||||
./update.sh ${{ matrix.dolibarr_version }}
|
||||
|
||||
update-readme:
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: |
|
||||
echo secrets.DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
echo secrets.DOCKER_HUB_USERNAME=${{ secrets.DOCKER_HUB_USERNAME }}
|
||||
docker run --rm -t \
|
||||
-v $(pwd):/src \
|
||||
-e DOCKER_USER=${{ secrets.DOCKER_HUB_USERNAME }} \
|
||||
|
||||
3
.github/workflows/test.yml
vendored
3
.github/workflows/test.yml
vendored
@@ -5,6 +5,9 @@ on:
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check-update:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:%PHP_BASE_IMAGE%
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=%DOLI_VERSION%
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
59
README.md
59
README.md
@@ -51,14 +51,13 @@ services:
|
||||
- /home/dolibarr_mariadb:/var/lib/mysql
|
||||
|
||||
web:
|
||||
# Choose the version of image to install
|
||||
# dolibarr/dolibarr:latest (the latest stable version)
|
||||
# dolibarr/dolibarr:develop
|
||||
# dolibarr/dolibarr:x.y.z
|
||||
# Choose the version of image to install
|
||||
# dolibarr/dolibarr:latest (the latest stable version)
|
||||
# dolibarr/dolibarr:develop
|
||||
# dolibarr/dolibarr:x.y.z
|
||||
image: dolibarr/dolibarr:latest
|
||||
environment:
|
||||
WWW_USER_ID: ${WWW_USER_ID:-1000}
|
||||
WWW_GROUP_ID: ${WWW_GROUP_ID:-1000}
|
||||
DOLI_INIT_DEMO: ${DOLI_INIT_DEMO:-0}
|
||||
DOLI_DB_HOST: ${DOLI_DB_HOST:-mariadb}
|
||||
DOLI_DB_NAME: ${DOLI_DB_NAME:-dolidb}
|
||||
DOLI_DB_USER: ${DOLI_DB_USER:-dolidbuser}
|
||||
@@ -68,8 +67,9 @@ services:
|
||||
DOLI_ADMIN_PASSWORD: "${DOLI_ADMIN_PASSWORD:-admin}"
|
||||
DOLI_CRON: ${DOLI_CRON:-0}
|
||||
DOLI_CRON_KEY: ${DOLI_CRON_KEY:-mycronsecurekey}
|
||||
DOLI_INIT_DEMO: ${DOLI_INIT_DEMO:-0}
|
||||
DOLI_COMPANY_NAME: ${DOLI_COMPANY_NAME:-MyBigCompany}
|
||||
WWW_USER_ID: ${WWW_USER_ID:-1000}
|
||||
WWW_GROUP_ID: ${WWW_GROUP_ID:-1000}
|
||||
|
||||
ports:
|
||||
- "80:80"
|
||||
@@ -100,12 +100,12 @@ able to access the Dolibarr using the URL http://0.0.0.0:xx
|
||||
|
||||
Other examples:
|
||||
|
||||
You can find several examples in the `examples` directory, such as:
|
||||
- [Running Dolibarr with cron (for Scheduled Tasks module)](./examples/with-cron/dolibarr-with-cron.md)
|
||||
- [Running Dolibarr with a letsencrypt certificate](./examples/with-certbot/dolibarr-with-certbot.md)
|
||||
- [Running Dolibarr with a mysql server](./examples/with-mysql/dolibarr-with-mysql.md)
|
||||
- [Running Dolibarr with a Traefik reverse proxy](./examples/with-rp-traefik/dolibarr-with-traefik.md)
|
||||
- [Running Dolibarr with secrets](./examples/with-secrets/dolibarr-with-secrets.md)
|
||||
You can find other examples of docker-compose.yml file for enhanced use in the `examples` directory, such as:
|
||||
- [Running Dolibarr with the cron (for Scheduled Tasks module)](https://github.com/Dolibarr/dolibarr-docker/tree/main/examples/with-cron/)
|
||||
- [Running Dolibarr with a letsencrypt certificate](https://github.com/Dolibarr/dolibarr-docker/tree/main/examples/with-certbot/)
|
||||
- [Running Dolibarr with a mysql server](https://github.com/Dolibarr/dolibarr-docker/tree/main/examples/with-mysql/)
|
||||
- [Running Dolibarr with a Traefik reverse proxy](https://github.com/Dolibarr/dolibarr-docker/tree/main/examples/with-rp-traefik/)
|
||||
- [Running Dolibarr with secrets](https://github.com/Dolibarr/dolibarr-docker/tree/main/examples/with-secrets/)
|
||||
|
||||
|
||||
## Upgrading Dolibarr version and migrating DB
|
||||
@@ -145,22 +145,17 @@ You can use the following variables for a better customization of your docker-co
|
||||
|
||||
| Variable | Default value | Description |
|
||||
| ------------------------------- | ------------------------------ | ----------- |
|
||||
| **WWW_USER_ID** | | ID of user www-data. ID will not changed if leave empty. During a development, it is very practical to put the same ID as the host user.
|
||||
| **WWW_GROUP_ID** | | ID of group www-data. ID will not changed if leave empty.
|
||||
| **PHP_INI_DATE_TIMEZONE** | *UTC* | Default timezone on PHP
|
||||
| **PHP_INI_MEMORY_LIMIT** | *256M* | PHP Memory limit
|
||||
| **PHP_INI_UPLOAD_MAX_FILESIZE** | *2M* | PHP Maximum allowed size for uploaded files
|
||||
| **PHP_INI_POST_MAX_SIZE** | *8M* | PHP Maximum size of POST data that PHP will accept.
|
||||
| **PHP_INI_ALLOW_URL_FOPEN** | *0* | Allow URL-aware fopen wrappers
|
||||
| **DOLI_INSTALL_AUTO** | *1* | 1: The installation will be done during docker first boot
|
||||
| **DOLI_INIT_DEMO** | *0* | 1: The installation will also load demo data during docker first boot
|
||||
| **DOLI_PROD** | *1* | 1: Dolibarr will be run in production mode
|
||||
| **DOLI_INSTANCE_UNIQUE_ID** | | Secret ID used as a salt / key for some encryption. By default, it is set randomly when the docker container is created.
|
||||
| **DOLI_DB_TYPE** | *mysqli* | Type of the DB server (**mysqli**, pgsql)
|
||||
| **DOLI_DB_HOST** | *mariadb* | Host name of the MariaDB/MySQL server
|
||||
| **DOLI_DB_HOST_PORT** | *3306* | Host port of the MariaDB/MySQL server
|
||||
| **DOLI_DB_NAME** | *dolidb* | Database name
|
||||
| **DOLI_DB_USER** | *dolidbuser* | Database user
|
||||
| **DOLI_DB_PASSWORD** | *dolidbpass* | Database user's password
|
||||
| **DOLI_DB_SSL** | *false* | Enable encrypted database connections (MySQL and Dolibarr >v19 required)
|
||||
| **DOLI_URL_ROOT** | *http://localhost* | Url root of the Dolibarr installation
|
||||
| **DOLI_ADMIN_LOGIN** | *admin* | Admin's login created on the first boot
|
||||
| **DOLI_ADMIN_PASSWORD** | *admin* | Admin's initial password created on the first boot
|
||||
@@ -179,20 +174,26 @@ You can use the following variables for a better customization of your docker-co
|
||||
| **DOLI_LDAP_BIND_PASS** | | The password of the bind user
|
||||
| **DOLI_LDAP_DEBUG** | *false* | Activate debug mode
|
||||
| **DOLI_CRON** | *0* | 1: Enable cron service
|
||||
| **DOLI_CRON_KEY** | | Security key launch cron jobs
|
||||
| **DOLI_CRON_USER** | | Dolibarr user used for cron jobs
|
||||
| **DOLI_INSTANCE_UNIQUE_ID** | | Secret ID used as a salt / key for some encryption. By default, it is set randomly when the docker container is created.
|
||||
| **DOLI_CRON_KEY** | | Security key to launch cron jobs
|
||||
| **DOLI_CRON_USER** | | Dolibarr user used to launch cron jobs (will use firstadmin if not defined)
|
||||
| **WWW_USER_ID** | | ID of user www-data. ID will not changed if leave empty. During a development, it is very practical to put the same ID as the host user.
|
||||
| **WWW_GROUP_ID** | | ID of group www-data. ID will not changed if leave empty.
|
||||
| **PHP_INI_DATE_TIMEZONE** | *UTC* | Default timezone on PHP
|
||||
| **PHP_INI_MEMORY_LIMIT** | *256M* | PHP Memory limit
|
||||
| **PHP_INI_UPLOAD_MAX_FILESIZE** | *2M* | PHP Maximum allowed size for uploaded files
|
||||
| **PHP_INI_POST_MAX_SIZE** | *8M* | PHP Maximum size of POST data that PHP will accept.
|
||||
| **PHP_INI_ALLOW_URL_FOPEN** | *0* | Allow URL-aware fopen wrappers
|
||||
|
||||
Some environment variables are compatible with docker secrets behaviour, just add the `_FILE` suffix to var name and point the value file to read.
|
||||
Environment variables that are compatible with docker secrets:
|
||||
|
||||
* `DOLI_INSTANCE_UNIQUE_ID` => `DOLI_INSTANCE_UNIQUE_ID_FILE`
|
||||
* `DOLI_DB_USER` => `DOLI_DB_USER_FILE`
|
||||
* `DOLI_DB_PASSWORD` => `DOLI_DB_PASSWORD_FILE`
|
||||
* `DOLI_ADMIN_LOGIN` => `DOLI_ADMIN_LOGIN_FILE`
|
||||
* `DOLI_ADMIN_PASSWORD` => `DOLI_ADMIN_PASSWORD_FILE`
|
||||
* `DOLI_CRON_KEY` => `DOLI_CRON_KEY_FILE`
|
||||
* `DOLI_CRON_USER` => `DOLI_CRON_USER_FILE`
|
||||
* `DOLI_INSTANCE_UNIQUE_ID` => `DOLI_INSTANCE_UNIQUE_ID_FILE`
|
||||
|
||||
|
||||
|
||||
@@ -223,12 +224,13 @@ services:
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-dolidbpass}
|
||||
|
||||
web:
|
||||
# Choose the version of image to install
|
||||
# dolibarr/dolibarr:latest (the latest stable version)
|
||||
# dolibarr/dolibarr:develop
|
||||
# dolibarr/dolibarr:x.y.z
|
||||
# Choose the version of image to install
|
||||
# dolibarr/dolibarr:latest (the latest stable version)
|
||||
# dolibarr/dolibarr:develop
|
||||
# dolibarr/dolibarr:x.y.z
|
||||
image: dolibarr/dolibarr
|
||||
environment:
|
||||
DOLI_INIT_DEMO: ${DOLI_INIT_DEMO:-0}
|
||||
DOLI_DB_HOST: ${DOLI_DB_HOST:-mariadb}
|
||||
DOLI_DB_NAME: ${DOLI_DB_NAME:-dolidb}
|
||||
DOLI_DB_USER: ${DOLI_DB_USER:-dolidbuser}
|
||||
@@ -238,7 +240,6 @@ services:
|
||||
DOLI_ADMIN_PASSWORD: "${DOLI_ADMIN_PASSWORD:-admin}"
|
||||
DOLI_CRON: ${DOLI_CRON:-0}
|
||||
DOLI_CRON_KEY: ${DOLI_CRON_KEY:-mycronsecurekey}
|
||||
DOLI_INIT_DEMO: ${DOLI_INIT_DEMO:-0}
|
||||
WWW_USER_ID: ${WWW_USER_ID:-1000}
|
||||
WWW_GROUP_ID: ${WWW_GROUP_ID:-1000}
|
||||
volumes :
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -15,8 +15,8 @@ services:
|
||||
environment:
|
||||
DOLI_DB_HOST: "mysql"
|
||||
DOLI_DB_HOST_PORT: "3306"
|
||||
DOLI_DB_USER: "dolidbuser"
|
||||
DOLI_DB_PASSWORD: "dolidbpass"
|
||||
DOLI_DB_USER: "dolibarr"
|
||||
DOLI_DB_PASSWORD: "mysupersecretpasswordfordatabase"
|
||||
DOLI_DB_NAME: "dolibarr"
|
||||
DOLI_ADMIN_LOGIN: "admin"
|
||||
DOLI_ADMIN_PASSWORD: "mysuperhypersecretpasswordforadminacount"
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:7.4-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=15.0.3
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.1-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=16.0.5
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.1-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=17.0.4
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.1-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=18.0.6
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.2-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=19.0.4
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.2-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=20.0.4
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.2-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=21.0.0
|
||||
ENV DOLI_VERSION=21.0.1
|
||||
ENV DOLI_VERSION_FOR_INIT_DEMO=21.0
|
||||
ENV DOLI_INSTALL_AUTO=1
|
||||
ENV DOLI_PROD=1
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
@@ -1 +1 @@
|
||||
All files in this directory and subdirectories are generated with the script update.sh using
|
||||
All files in this directory and subdirectories are generated with the script update.sh.
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
ARG ARCH=
|
||||
|
||||
# Use an image like PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Use a PHP image
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-buster
|
||||
# Example: PHP_BASE_IMAGE=x.y-apache-bullseye
|
||||
# Note: Version of the PHP image must be a compatible version according to https://wiki.dolibarr.org/index.php?title=Versions
|
||||
FROM ${ARCH}php:8.2-apache-bullseye
|
||||
|
||||
# Credit/Initial maintainer: Garcia MICHEL <garcia@soamichel.fr>
|
||||
# Modified according to the GPL license by developers of the Dolibarr community:
|
||||
# 2024 Alois Micard
|
||||
# 2024 Laurent Destailleur
|
||||
# 2025 Renato de Castro Ferreira
|
||||
LABEL maintainer="The Dolibarr foundation <contact@dolibarr.org>"
|
||||
|
||||
ENV DOLI_VERSION=develop
|
||||
@@ -18,9 +22,9 @@ ENV DOLI_DB_TYPE=mysqli
|
||||
ENV DOLI_DB_HOST=mysql
|
||||
ENV DOLI_DB_HOST_PORT=3306
|
||||
ENV DOLI_DB_NAME=dolidb
|
||||
ENV DOLI_DB_SSL=false
|
||||
|
||||
ENV DOLI_URL_ROOT='http://localhost'
|
||||
ENV DOLI_NOCSRFCHECK=0
|
||||
|
||||
ENV DOLI_AUTH=dolibarr
|
||||
ENV DOLI_LDAP_HOST=127.0.0.1
|
||||
@@ -69,8 +73,8 @@ RUN apt-get update -y \
|
||||
postgresql-client \
|
||||
vim-tiny \
|
||||
cron \
|
||||
&& apt-get autoremove -y \
|
||||
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& apt-get autoremove -y
|
||||
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
|
||||
&& docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip opcache tidy \
|
||||
&& docker-php-ext-configure pgsql -with-pgsql \
|
||||
&& docker-php-ext-install pdo_pgsql pgsql \
|
||||
@@ -79,8 +83,15 @@ RUN apt-get update -y \
|
||||
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
|
||||
&& docker-php-ext-install imap \
|
||||
&& mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini \
|
||||
&& sed -i 's/expose_php = On/expose_php = Off/g' ${PHP_INI_DIR}/php.ini \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Disable useless Apache modules to provide safe defaults
|
||||
RUN a2disconf serve-cgi-bin \
|
||||
&& a2dismod status \
|
||||
&& a2dismod -f alias \
|
||||
&& a2dismod -f autoindex
|
||||
|
||||
# Get Dolibarr
|
||||
RUN curl -fLSs https://github.com/Dolibarr/dolibarr/archive/${DOLI_VERSION}.tar.gz |\
|
||||
tar -C /tmp -xz && \
|
||||
|
||||
@@ -59,7 +59,6 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_url_root_alt='/custom';
|
||||
\$dolibarr_main_document_root_alt='/var/www/html/custom';
|
||||
\$dolibarr_main_data_root='/var/www/documents';
|
||||
\$dolibarr_main_db_host='${DOLI_DB_HOST}';
|
||||
\$dolibarr_main_db_port='${DOLI_DB_HOST_PORT}';
|
||||
\$dolibarr_main_db_name='${DOLI_DB_NAME}';
|
||||
\$dolibarr_main_db_prefix='llx_';
|
||||
@@ -69,6 +68,14 @@ if [[ ! -f /var/www/html/conf/conf.php ]]; then
|
||||
\$dolibarr_main_authentication='${DOLI_AUTH}';
|
||||
\$dolibarr_main_prod=${DOLI_PROD};
|
||||
EOF
|
||||
|
||||
# Check if SSL is enabled for the database
|
||||
if [[ "${DOLI_DB_SSL}" == "true" && "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_host='ssl://${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
else
|
||||
echo "\$dolibarr_main_db_host='${DOLI_DB_HOST}';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
|
||||
if [[ ! -z ${DOLI_INSTANCE_UNIQUE_ID} ]]; then
|
||||
echo "[INIT] => update Dolibarr Config with instance unique id ..."
|
||||
echo "\$dolibarr_main_instance_unique_id='${DOLI_INSTANCE_UNIQUE_ID}';" >> /var/www/html/conf/conf.php
|
||||
@@ -92,7 +99,7 @@ EOF
|
||||
\$dolibarr_main_auth_ldap_debug='${DOLI_LDAP_DEBUG}';
|
||||
EOF
|
||||
fi
|
||||
if [[ ${DOLI_DB_TYPE} == "mysqli" ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "mysqli" ]]; then
|
||||
echo "\$dolibarr_main_db_character_set='utf8mb4';" >> /var/www/html/conf/conf.php
|
||||
echo "\$dolibarr_main_db_collation='utf8mb4_unicode_ci';" >> /var/www/html/conf/conf.php
|
||||
fi
|
||||
@@ -100,7 +107,7 @@ EOF
|
||||
|
||||
echo "[INIT] => update ownership for file in Dolibarr Config ..."
|
||||
chown www-data:www-data /var/www/html/conf/conf.php
|
||||
if [[ ${DOLI_DB_TYPE} == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
if [[ "${DOLI_DB_TYPE}" == "pgsql" && ! -f /var/www/documents/install.lock ]]; then
|
||||
chmod 600 /var/www/html/conf/conf.php
|
||||
else
|
||||
chmod 400 /var/www/html/conf/conf.php
|
||||
@@ -114,7 +121,7 @@ function waitForDataBase()
|
||||
r=1
|
||||
|
||||
while [[ ${r} -ne 0 ]]; do
|
||||
mysql -u ${DOLI_DB_USER} --protocol tcp -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" --protocol tcp -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" --connect-timeout=5 -e "status" >> /var/www/documents/initdb.log 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Waiting that SQL database is up ..."
|
||||
@@ -149,7 +156,7 @@ function runScripts()
|
||||
if [ "$isExec" == "SQL" ] ; then
|
||||
sed -i 's/^--.*//g;' ${file}
|
||||
sed -i 's/__ENTITY__/1/g;' ${file}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${file} >> /var/www/documents/initdb.log 2>&1
|
||||
elif [ "$isExec" == "PHP" ] ; then
|
||||
php $file
|
||||
elif [ "$isExec" == "SH" ] ; then
|
||||
@@ -168,7 +175,7 @@ function initializeDatabase()
|
||||
echo "Importing table from `basename ${fileSQL}` ..."
|
||||
echo "Importing table from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/--.*//g;' ${fileSQL} # remove all comment because comments into create sql crash the load
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -176,14 +183,14 @@ function initializeDatabase()
|
||||
echo "Importing table key from `basename ${fileSQL}` ..."
|
||||
echo "Importing table key from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/functions/*.sql; do
|
||||
echo "Importing `basename ${fileSQL}` ..."
|
||||
echo "Importing `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
for fileSQL in /var/www/html/install/mysql/data/*.sql; do
|
||||
@@ -195,17 +202,17 @@ function initializeDatabase()
|
||||
echo "Importing data from `basename ${fileSQL}` ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/^--.*//g;' ${fileSQL}
|
||||
sed -i 's/__ENTITY__/1/g;' ${fileSQL}
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
|
||||
echo "Set some default const ..."
|
||||
echo "Set some default const ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_VERSION_LAST_INSTALL';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_NOT_INSTALLED';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_LANG_DEFAULT';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_VERSION_LAST_INSTALL', '${DOLI_VERSION}', 'chaine', 0, 'Dolibarr version when install', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_LANG_DEFAULT', 'auto', 'chaine', 0, 'Default language', 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('SYSTEMTOOLS_MYSQLDUMP', '/usr/bin/mysqldump', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
if [[ ${DOLI_INIT_DEMO} -eq 1 ]]; then
|
||||
mkdir -p /var/www/dev/initdemo/
|
||||
@@ -233,17 +240,17 @@ function initializeDatabase()
|
||||
echo "Found demo data file, so we first drop tables llx_accounting_xxx ..." >> /var/www/documents/initdb.log
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_account\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_account" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\""
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"DROP TABLE llx_accounting_system\"" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DROP TABLE llx_accounting_system" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Then we load demo data ${fileSQL} ..."
|
||||
echo "Then we load demo data ${fileSQL} ..." >> /var/www/documents/initdb.log
|
||||
sed -i 's/\/\*!999999\\- enable the sandbox mode \*\///g;' ${fileSQL}
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}"
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL}" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < ${fileSQL} >> /var/www/documents/initdb.log 2>&1
|
||||
done
|
||||
fi
|
||||
else
|
||||
@@ -254,14 +261,17 @@ function initializeDatabase()
|
||||
echo "Create SuperAdmin account ..."
|
||||
echo "Create SuperAdmin account ..." >> /var/www/documents/initdb.log
|
||||
pass_crypted=`echo -n ${DOLI_ADMIN_PASSWORD} | md5sum | awk '{print $1}'`
|
||||
# TODO Generate pass_crypted using PHP password_hash and set MAIN_SECURITY_HASH_ALGO=password_hash into llx_const
|
||||
#pass_crypted2=`php -r "echo password_hash(${DOLI_ADMIN_PASSWORD}, PASSWORD_BCRYPT);"`
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "DELETE FROM llx_const WHERE name='MAIN_SECURITY_HASH_ALGO';" >> /var/www/documents/initdb.log 2>&1
|
||||
#mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_const(name,value,type,visible,note,entity) VALUES ('MAIN_SECURITY_HASH_ALGO', 'password_hash', 'chaine', 0, '', 0);" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Insert may fails if record already exists
|
||||
echo "Try insert into llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "INSERT INTO llx_user (entity, login, pass_crypted, lastname, admin, statut) VALUES (0, '${DOLI_ADMIN_LOGIN}', '${pass_crypted}', 'SuperAdmin', 1, 1);" >> /var/www/documents/initdb.log 2>&1
|
||||
# Insert may fails if record already exists
|
||||
echo "Now do update llx_user ..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_user SET pass_crypted = '${pass_crypted}' WHERE login = '${DOLI_ADMIN_LOGIN}';" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
echo "Enable user module ..."
|
||||
echo "Enable user module ..." >> /var/www/documents/initdb.log
|
||||
@@ -269,7 +279,7 @@ function initializeDatabase()
|
||||
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..."
|
||||
echo "Set cron key to ${DOLI_CRON_KEY}..." >> /var/www/documents/initdb.log
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "UPDATE llx_const set value = '${DOLI_CRON_KEY}' WHERE name = 'CRON_KEY'" >> /var/www/documents/initdb.log 2>&1
|
||||
|
||||
# Run init scripts
|
||||
echo "Run scripts into docker-init.d if there is ..."
|
||||
@@ -287,7 +297,7 @@ function migrateDatabase()
|
||||
TARGET_VERSION="$(echo ${DOLI_VERSION} | cut -d. -f1).$(echo ${DOLI_VERSION} | cut -d. -f2).0"
|
||||
echo "Dumping Database into /var/www/documents/backup-before-upgrade.sql ..."
|
||||
|
||||
mysqldump -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} > /var/www/documents/backup-before-upgrade.sql
|
||||
mysqldump -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" > /var/www/documents/backup-before-upgrade.sql
|
||||
r=${?}
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Dump failed ... Aborting migration ..."
|
||||
@@ -311,7 +321,7 @@ function migrateDatabase()
|
||||
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
echo "Migration failed ... Restoring DB ... check file /var/www/documents/migration_error.html for more info on error ..."
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} < /var/www/documents/backup-before-upgrade.sql
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" < /var/www/documents/backup-before-upgrade.sql
|
||||
echo "DB Restored ..."
|
||||
return ${r}
|
||||
else
|
||||
@@ -330,7 +340,7 @@ function run()
|
||||
echo "Current Version of files is : ${DOLI_VERSION}"
|
||||
|
||||
# If install of mysql database (and not install of cron) is requested
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && ${DOLI_DB_TYPE} != "pgsql" ]]; then
|
||||
if [[ ${DOLI_INSTALL_AUTO} -eq 1 && ${DOLI_CRON} -ne 1 && "${DOLI_DB_TYPE}" != "pgsql" ]]; then
|
||||
echo "DOLI_INSTALL_AUTO is on, so we check to initialize or upgrade mariadb database"
|
||||
|
||||
waitForDataBase
|
||||
@@ -338,10 +348,10 @@ function run()
|
||||
# Check if DB exists (even if empty)
|
||||
DB_EXISTS=0
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e \"SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';\" > /tmp/docker-run-checkdb.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '${DOLI_DB_NAME}';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" -e "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = '"${DOLI_DB_NAME}"';" > /tmp/docker-run-checkdb.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -eq 0 ]]; then
|
||||
DB_EXISTS=`grep ${DOLI_DB_NAME} /tmp/docker-run-checkdb.result`
|
||||
DB_EXISTS=`grep "${DOLI_DB_NAME}" /tmp/docker-run-checkdb.result`
|
||||
fi
|
||||
echo "DB Exists is : ${DB_EXISTS}" >> /var/www/documents/initdb.log 2>&1
|
||||
echo "DB Exists is : ${DB_EXISTS}"
|
||||
@@ -357,7 +367,7 @@ function run()
|
||||
# If install.lock does not exists, or if db does not exists, we launch the initializeDatabase, then upgrade if required.
|
||||
if [[ ! -f /var/www/documents/install.lock || "${DB_EXISTS}" = "" ]]; then
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
r=$?
|
||||
if [[ ${r} -ne 0 ]]; then
|
||||
# If test fails, it means tables does not exists, so we create them
|
||||
@@ -368,7 +378,7 @@ function run()
|
||||
|
||||
# Regenerate the /tmp/docker-run-lastinstall.result
|
||||
echo "mysql -u ${DOLI_DB_USER} -pxxxxxx -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e \"SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1\" > /tmp/docker-run-lastinstall.result 2>&1" >> /var/www/documents/initdb.log 2>&1
|
||||
mysql -u ${DOLI_DB_USER} -p${DOLI_DB_PASSWORD} -h ${DOLI_DB_HOST} -P ${DOLI_DB_HOST_PORT} ${DOLI_DB_NAME} -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
mysql -u "${DOLI_DB_USER}" -p"${DOLI_DB_PASSWORD}" -h "${DOLI_DB_HOST}" -P "${DOLI_DB_HOST_PORT}" "${DOLI_DB_NAME}" -e "SELECT Q.LAST_INSTALLED_VERSION FROM (SELECT INET_ATON(REPLACE(REPLACE(CONCAT(value, REPEAT('.0', 3 - CHAR_LENGTH(value) + CHAR_LENGTH(REPLACE(value, '.', '')))), '-beta', ''), '-alpha', '')) as VERSION_ATON, value as LAST_INSTALLED_VERSION FROM llx_const WHERE name IN ('MAIN_VERSION_LAST_INSTALL', 'MAIN_VERSION_LAST_UPGRADE') and entity=0) Q ORDER BY VERSION_ATON DESC LIMIT 1" > /tmp/docker-run-lastinstall.result 2>&1
|
||||
fi
|
||||
|
||||
# Now database exists. Do we have to upgrade it ?
|
||||
|
||||
@@ -21,7 +21,11 @@ source "${BASE_DIR}/versions.sh"
|
||||
|
||||
tags=""
|
||||
|
||||
# First, clean the directory /images
|
||||
# Generate an up-to-date copy of .github/workflows/build.yml using the Dolibarr versions as defined in versions.sh
|
||||
FORMATTED_DOLIBARR_VERSIONS=$(IFS=","; echo "${DOLIBARR_VERSIONS[*]}")
|
||||
sed 's/%DOLIBARR_VERSIONS%/'"$FORMATTED_DOLIBARR_VERSIONS"'/g' "${BASE_DIR}/.github/build.yml.template" | sed 's/,/, /g' > "${BASE_DIR}/.github/workflows/build.yml"
|
||||
|
||||
# Clean the directory /images
|
||||
if [ -f "${BASE_DIR}/images/README.md" ]; then
|
||||
cp -f "${BASE_DIR}/images/README.md" "/tmp/tmp-README.md"
|
||||
fi
|
||||
|
||||
@@ -3,10 +3,10 @@
|
||||
set -e
|
||||
|
||||
# The list of version to build docker packages for
|
||||
DOLIBARR_VERSIONS=("15.0.3" "16.0.5" "17.0.4" "18.0.6" "19.0.4" "20.0.4" "21.0.0" "develop")
|
||||
DOLIBARR_VERSIONS=("15.0.3" "16.0.5" "17.0.4" "18.0.6" "19.0.4" "20.0.4" "21.0.1" "develop")
|
||||
|
||||
# The version to use when installing dolibarr/dolibarr:latest
|
||||
DOLIBARR_LATEST_TAG="21.0.0"
|
||||
DOLIBARR_LATEST_TAG="21.0.1"
|
||||
|
||||
# The version to use to find the dump file for the init of demo with branch "develop"
|
||||
DOLIBARR_VERSION_FOR_INIT_DEMO="21.0"
|
||||
|
||||
Reference in New Issue
Block a user