From 08702a0d1a1dade205a587c65076f7824fb21ed7 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Wed, 26 Aug 2020 14:16:49 +0200 Subject: [PATCH 1/6] on going version 3 --- build/docker/Dockerfile | 62 +++++++++++++++++----------- build/docker/docker-compose.yml | 73 ++++++++++++++++++++------------- htdocs/install/fileconf.php | 2 +- 3 files changed, 83 insertions(+), 54 deletions(-) diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index 9264eed5ef2..bf50a585a41 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -1,20 +1,34 @@ -FROM php:7.2-apache +FROM php:7.3-apache -ENV HOST_USER_ID 33 +ENV WWW_USER_ID 33 +ENV WWW_GROUP_ID 33 ENV PHP_INI_DATE_TIMEZONE 'UTC' +ENV PHP_INI_MEMORY_LIMIT 256M -RUN apt-get update && apt-get install -y libpng16-16 libpng-dev libjpeg62-turbo libjpeg62-turbo-dev libldap2-dev zlib1g-dev libicu-dev g++\ - && rm -rf /var/lib/apt/lists/* \ - && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ - && docker-php-ext-install gd \ - && docker-php-ext-install zip \ - && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ - && docker-php-ext-install ldap \ - && docker-php-ext-install mysqli \ - && docker-php-ext-install calendar \ - && docker-php-ext-configure intl \ - && docker-php-ext-install intl \ - && apt-get autoremove --purge -y libpng-dev libjpeg62-turbo-dev libldap2-dev zlib1g-dev libicu-dev g++ +RUN apt-get update -y \ + && apt-get install -y --no-install-recommends \ + libfreetype6-dev \ + libjpeg62-turbo-dev \ + libjpeg62-turbo \ + libpng-dev \ + libpng16-16 \ + libldap2-dev \ + libxml2-dev \ + libzip-dev \ + zlib1g-dev \ + libicu-dev \ + g++ \ + default-mysql-client \ + unzip \ + curl \ + apt-utils \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* \ + && docker-php-ext-configure gd --with-png-dir=/usr --with-jpeg-dir=/usr \ + && docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \ + && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ + && docker-php-ext-install -j$(nproc) ldap && \ + mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini RUN mkdir /var/documents RUN chown www-data /var/documents @@ -23,16 +37,16 @@ COPY docker-run.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-run.sh RUN pecl install xdebug && docker-php-ext-enable xdebug -RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so"' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_autostart=0' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_enable=1' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.default_enable=0' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_host=docker.host' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_port=9000' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_connect_back=0' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.profiler_enable=0' >> /usr/local/etc/php/php.ini -RUN echo 'xdebug.remote_log="/tmp/xdebug.log"' >> /usr/local/etc/php/php.ini -RUN echo '172.17.0.1 docker.host' >> /etc/hosts +RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_autostart=0' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_enable=1' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.default_enable=0' >> ${PHP_INI_DIR}/php.ini +#RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_port=9000' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_connect_back=0' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.profiler_enable=0' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini +#RUN echo '172.17.0.1 docker.host' >> /etc/hosts EXPOSE 80 diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index cc839810e7f..5e3a4444e41 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -1,32 +1,47 @@ -mariadb: - build: mariadb - environment: - MYSQL_ROOT_PASSWORD: root - MYSQL_DATABASE: dolibarr +version: '3' -phpmyadmin: - image: phpmyadmin/phpmyadmin - environment: - PMA_HOST: mariadb - links: - - mariadb - ports: - - "8080:80" +networks: + internal-pod: + internal: true + external-pod: + internal: false -web: - build: . - environment: - HOST_USER_ID: $HOST_USER_ID - volumes: - - ../../htdocs:/var/www/html - links: - - mariadb - - mail - ports: - - "80:80" +services: + mariadb: + image: mariadb:latest + environment: + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: dolibarr + networks: + - internal-pod -mail: - image: maildev/maildev - ports: - - "8081:80" - - "25:25" \ No newline at end of file + phpmyadmin: + image: phpmyadmin/phpmyadmin + environment: + PMA_HOST: mariadb + depends_on: + - mariadb + ports: + - "8080:80" + + web: + build: + context: . + environment: + HOST_USER_ID: $HOST_USER_ID + volumes: + - ../../htdocs:/var/www/html/ + ports: + - "80:80" + depends_on: + - mariadb + - mail + networks: + - internal-pod + - external-pod + + mail: + image: maildev/maildev + ports: + - "8081:80" + - "25:25" diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 4e914e1a4f3..14f3d19bdf9 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -31,7 +31,7 @@ include_once 'inc.php'; global $langs; -$err = 0; +$err = 0 $setuplang = GETPOST("selectlang", '', 3) ?GETPOST("selectlang", '', 3) : (isset($_GET["lang"]) ? $_GET["lang"] : 'auto'); $langs->setDefaultLang($setuplang); From b7f4162721a8ac7e5e50b1bb7781c2a2d19b1dc1 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Fri, 28 Aug 2020 12:10:08 +0200 Subject: [PATCH 2/6] use new version docker file --- build/docker/Dockerfile | 12 ++++++------ build/docker/docker-compose.yml | 3 +++ build/docker/docker-run.sh | 5 ++--- htdocs/install/fileconf.php | 2 +- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index bf50a585a41..ca5f990a802 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -28,7 +28,7 @@ RUN apt-get update -y \ && docker-php-ext-install -j$(nproc) calendar intl mysqli pdo_mysql gd soap zip \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ && docker-php-ext-install -j$(nproc) ldap && \ - mv ${PHP_INI_DIR}/php.ini-production ${PHP_INI_DIR}/php.ini + mv ${PHP_INI_DIR}/php.ini-development ${PHP_INI_DIR}/php.ini RUN mkdir /var/documents RUN chown www-data /var/documents @@ -38,15 +38,15 @@ RUN chmod +x /usr/local/bin/docker-run.sh RUN pecl install xdebug && docker-php-ext-enable xdebug RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so"' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_autostart=0' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_autostart=1' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_enable=1' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.default_enable=0' >> ${PHP_INI_DIR}/php.ini -#RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.default_enable=1' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_port=9000' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_connect_back=0' >> ${PHP_INI_DIR}/php.ini +RUN echo 'xdebug.remote_connect_back=1' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.profiler_enable=0' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini -#RUN echo '172.17.0.1 docker.host' >> /etc/hosts +RUN echo '172.17.0.1 docker.host' >> /etc/hosts EXPOSE 80 diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index 5e3a4444e41..1f8f7e3063b 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -23,6 +23,8 @@ services: - mariadb ports: - "8080:80" + networks: + - internal-pod web: build: @@ -33,6 +35,7 @@ services: - ../../htdocs:/var/www/html/ ports: - "80:80" + - "9000:9001" depends_on: - mariadb - mail diff --git a/build/docker/docker-run.sh b/build/docker/docker-run.sh index df7272c317d..cec7e138b4a 100644 --- a/build/docker/docker-run.sh +++ b/build/docker/docker-run.sh @@ -1,7 +1,7 @@ #!/bin/bash -usermod -u $HOST_USER_ID www-data -groupmod -g $HOST_USER_ID www-data +usermod -u "${HOST_USER_ID}" www-data +groupmod -g "${HOST_USER_ID}" www-data chgrp -hR www-data /var/www/html chmod g+rwx /var/www/html/conf @@ -9,7 +9,6 @@ chmod g+rwx /var/www/html/conf if [ ! -f /usr/local/etc/php/php.ini ]; then cat < /usr/local/etc/php/php.ini date.timezone = $PHP_INI_DATE_TIMEZONE -display_errors = On EOF fi diff --git a/htdocs/install/fileconf.php b/htdocs/install/fileconf.php index 14f3d19bdf9..4e914e1a4f3 100644 --- a/htdocs/install/fileconf.php +++ b/htdocs/install/fileconf.php @@ -31,7 +31,7 @@ include_once 'inc.php'; global $langs; -$err = 0 +$err = 0; $setuplang = GETPOST("selectlang", '', 3) ?GETPOST("selectlang", '', 3) : (isset($_GET["lang"]) ? $_GET["lang"] : 'auto'); $langs->setDefaultLang($setuplang); From fba614632f4615d10bcec61a1ef2fd6905d58f98 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Sat, 29 Aug 2020 18:31:42 +0200 Subject: [PATCH 3/6] working on docker image --- build/docker/Dockerfile | 6 ++---- build/docker/README.md | 2 ++ build/docker/docker-compose.yml | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index ca5f990a802..aa756f1e975 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -1,7 +1,5 @@ FROM php:7.3-apache -ENV WWW_USER_ID 33 -ENV WWW_GROUP_ID 33 ENV PHP_INI_DATE_TIMEZONE 'UTC' ENV PHP_INI_MEMORY_LIMIT 256M @@ -41,12 +39,12 @@ RUN echo 'zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-2018073 RUN echo 'xdebug.remote_autostart=1' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_enable=1' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.default_enable=1' >> ${PHP_INI_DIR}/php.ini -RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini +#RUN echo 'xdebug.remote_host=docker.host' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_port=9000' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_connect_back=1' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.profiler_enable=0' >> ${PHP_INI_DIR}/php.ini RUN echo 'xdebug.remote_log="/tmp/xdebug.log"' >> ${PHP_INI_DIR}/php.ini -RUN echo '172.17.0.1 docker.host' >> /etc/hosts +#RUN echo '172.17.0.1 docker.host' >> /etc/hosts EXPOSE 80 diff --git a/build/docker/README.md b/build/docker/README.md index 616cbd8fa78..13b89567766 100644 --- a/build/docker/README.md +++ b/build/docker/README.md @@ -1,6 +1,8 @@ # How to use it ? The docker-compose.yml file is used to build and run Dolibarr in the current workspace. +This docker image intended for developpement usage. +For production usage you should consider other contributor reference like https://hub.docker.com/r/tuxgasy/dolibarr Before build/run, define the variable HOST_USER_ID as following: diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index 1f8f7e3063b..9c40fbe7fc6 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -35,7 +35,7 @@ services: - ../../htdocs:/var/www/html/ ports: - "80:80" - - "9000:9001" + - "9000:9000" depends_on: - mariadb - mail From 9614dcf9ec83fed72d3abec76b3cf4c387209ad2 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Sat, 29 Aug 2020 18:38:26 +0200 Subject: [PATCH 4/6] fix comment --- .../mysql/tables/llx_recruitment_recruitmentcandidature.key.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature.key.sql b/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature.key.sql index 93fb231dc35..eae967704b4 100644 --- a/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature.key.sql +++ b/htdocs/install/mysql/tables/llx_recruitment_recruitmentcandidature.key.sql @@ -23,5 +23,5 @@ ALTER TABLE llx_recruitment_recruitmentcandidature ADD INDEX idx_recruitment_rec ALTER TABLE llx_recruitment_recruitmentcandidature ADD UNIQUE INDEX uk_recruitmentcandidature_email_msgid(email_msgid); ---ALTER TABLE llx_recruitment_recruitmentcandidature ADD CONSTRAINT llx_mymodule_myobject_fk_field FOREIGN KEY (fk_field) REFERENCES llx_mymodule_myotherobject(rowid); +-- ALTER TABLE llx_recruitment_recruitmentcandidature ADD CONSTRAINT llx_mymodule_myobject_fk_field FOREIGN KEY (fk_field) REFERENCES llx_mymodule_myotherobject(rowid); From e9ff43ad44d2847b962334facf194760191c2c2b Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Tue, 1 Sep 2020 14:31:54 +0200 Subject: [PATCH 5/6] ongoing --- build/docker/Dockerfile | 2 +- build/docker/docker-compose.yml | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index aa756f1e975..2be287c2db9 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -29,7 +29,7 @@ RUN apt-get update -y \ mv ${PHP_INI_DIR}/php.ini-development ${PHP_INI_DIR}/php.ini RUN mkdir /var/documents -RUN chown www-data /var/documents +RUN chown www-data:www-data /var/documents COPY docker-run.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-run.sh diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index 9c40fbe7fc6..45a1a76d6fc 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -25,6 +25,7 @@ services: - "8080:80" networks: - internal-pod + - external-pod web: build: @@ -33,6 +34,7 @@ services: HOST_USER_ID: $HOST_USER_ID volumes: - ../../htdocs:/var/www/html/ + - ../../documents:/var/documents ports: - "80:80" - "9000:9000" From 1dc84c571584dc314b8c398775b8e4e47daebca9 Mon Sep 17 00:00:00 2001 From: Florian HENRY Date: Mon, 7 Sep 2020 16:04:06 +0200 Subject: [PATCH 6/6] update docker to new standard --- build/docker/README.md | 1 + build/docker/docker-compose.yml | 3 +-- build/docker/docker-run.sh | 11 +++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/build/docker/README.md b/build/docker/README.md index 13b89567766..2fd278a531f 100644 --- a/build/docker/README.md +++ b/build/docker/README.md @@ -28,3 +28,4 @@ The URL to go to PhpMyAdmin is (login/password is root/root) : Setup the database connection during the installation process, please use mariad b (name of the database container) as database host. +Setup documents folder, during the installation process, to /var/documents diff --git a/build/docker/docker-compose.yml b/build/docker/docker-compose.yml index 45a1a76d6fc..efdc95d2858 100644 --- a/build/docker/docker-compose.yml +++ b/build/docker/docker-compose.yml @@ -28,8 +28,7 @@ services: - external-pod web: - build: - context: . + build: . environment: HOST_USER_ID: $HOST_USER_ID volumes: diff --git a/build/docker/docker-run.sh b/build/docker/docker-run.sh index cec7e138b4a..e57d9adfad0 100644 --- a/build/docker/docker-run.sh +++ b/build/docker/docker-run.sh @@ -1,11 +1,18 @@ #!/bin/bash -usermod -u "${HOST_USER_ID}" www-data -groupmod -g "${HOST_USER_ID}" www-data +usermod -u ${HOST_USER_ID} www-data +groupmod -g ${HOST_USER_ID} www-data chgrp -hR www-data /var/www/html chmod g+rwx /var/www/html/conf +if [ ! -d /var/documents ]; then + echo "[docker-run] => create volume directory /var/documents ..." + mkdir -p /var/documents +fi +echo "[docker-run] => Set Permission to www-data for /var/documents" +chown -R www-data:www-data /var/documents + if [ ! -f /usr/local/etc/php/php.ini ]; then cat < /usr/local/etc/php/php.ini date.timezone = $PHP_INI_DATE_TIMEZONE