diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3c0a211..7ea93cb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,8 +1,11 @@ name: build on: - push: - branches: - - main + #push: + # branches: + # - main + # can run job manually + workflow_dispatch: + # Run once a week schedule: - cron: '0 0 * * 6' diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 40930a6..1355fc1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -29,7 +29,9 @@ jobs: - env: DOLI_INSTALL_AUTO: 0 run: | + # Regenerate all the image files ./update.sh + # Try to build the image inimages/develop docker build -t dolibarr/dolibarr:develop images/develop docker run -d -p 127.0.0.1:80:80 --name dolibarr dolibarr/dolibarr:develop docker ps | grep -q dolibarr diff --git a/README.md b/README.md index 5601442..592f098 100644 --- a/README.md +++ b/README.md @@ -67,6 +67,7 @@ services: DOLI_ADMIN_LOGIN: "${DOLI_ADMIN_LOGIN:-admin}" 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} @@ -234,6 +235,8 @@ services: DOLI_URL_ROOT: "${DOLI_URL_ROOT:-http://0.0.0.0}" DOLI_ADMIN_LOGIN: "${DOLI_ADMIN_LOGIN:-admin}" 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} diff --git a/docker-compose.yml b/docker-compose.yml index 9ccb878..44be222 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -31,6 +31,7 @@ services: - mysql-user - mysql-password environment: + #MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root} MYSQL_RANDOM_ROOT_PASSWORD: "1" MYSQL_DATABASE: "dolidb" MYSQL_USER_FILE: "/run/secrets/mysql-user" @@ -86,6 +87,7 @@ services: DOLI_URL_ROOT: 'http://0.0.0.0:81' DOLI_INSTANCE_UNIQUE_ID: myinstanceuniqueid DOLI_INIT_DEMO: 1 + DOLI_CRON_KEY: mycronsecurekey ports: - "81:80" networks: diff --git a/docker-run.sh b/docker-run.sh index 6c7fa81..3986f34 100755 --- a/docker-run.sh +++ b/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/examples/with-mysql/docker-compose.yml b/examples/with-mysql/docker-compose.yml index 69434bb..50a4753 100644 --- a/examples/with-mysql/docker-compose.yml +++ b/examples/with-mysql/docker-compose.yml @@ -15,8 +15,8 @@ services: environment: DOLI_DB_HOST: "mysql" DOLI_DB_HOST_PORT: "3306" - DOLI_DB_USER: "dolibarr" - DOLI_DB_PASSWORD: "mysupersecretpasswordfordatabase" + DOLI_DB_USER: "dolidbuser" + DOLI_DB_PASSWORD: "dolidbpass" DOLI_DB_NAME: "dolibarr" DOLI_ADMIN_LOGIN: "admin" DOLI_ADMIN_PASSWORD: "mysuperhypersecretpasswordforadminacount" diff --git a/examples/with-secrets/secrets/mysql_password.secret b/examples/with-secrets/secrets/mysql_password.secret index e00065a..5a752e5 100644 --- a/examples/with-secrets/secrets/mysql_password.secret +++ b/examples/with-secrets/secrets/mysql_password.secret @@ -1 +1 @@ -mysupersecretpasswordfordatabase \ No newline at end of file +dolidbpass \ No newline at end of file diff --git a/examples/with-secrets/secrets/mysql_user.secret b/examples/with-secrets/secrets/mysql_user.secret index 3d33aac..6df9168 100644 --- a/examples/with-secrets/secrets/mysql_user.secret +++ b/examples/with-secrets/secrets/mysql_user.secret @@ -1 +1 @@ -dolibarr \ No newline at end of file +dolidbuser \ No newline at end of file diff --git a/images/15.0.3-php7.4/docker-run.sh b/images/15.0.3-php7.4/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/15.0.3-php7.4/docker-run.sh +++ b/images/15.0.3-php7.4/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/16.0.5-php8.1/docker-run.sh b/images/16.0.5-php8.1/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/16.0.5-php8.1/docker-run.sh +++ b/images/16.0.5-php8.1/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/17.0.4-php8.1/docker-run.sh b/images/17.0.4-php8.1/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/17.0.4-php8.1/docker-run.sh +++ b/images/17.0.4-php8.1/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/18.0.6-php8.1/docker-run.sh b/images/18.0.6-php8.1/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/18.0.6-php8.1/docker-run.sh +++ b/images/18.0.6-php8.1/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/19.0.4-php8.2/docker-run.sh b/images/19.0.4-php8.2/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/19.0.4-php8.2/docker-run.sh +++ b/images/19.0.4-php8.2/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/20.0.4-php8.2/docker-run.sh b/images/20.0.4-php8.2/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/20.0.4-php8.2/docker-run.sh +++ b/images/20.0.4-php8.2/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/images/develop/docker-run.sh b/images/develop/docker-run.sh index 6c7fa81..3986f34 100755 --- a/images/develop/docker-run.sh +++ b/images/develop/docker-run.sh @@ -267,6 +267,10 @@ function initializeDatabase() echo "Enable user module ..." >> /var/www/documents/initdb.log php /var/www/scripts/docker-init.php + 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 + # Run init scripts echo "Run scripts into docker-init.d if there is ..." echo "Run scripts into docker-init.d if there is ..." >> /var/www/documents/initdb.log @@ -431,6 +435,8 @@ function run() echo "*** You can connect to the docker Mariadb with:" echo "sudo docker exec -it nameofwebcontainer-mariadb-1 bash" echo "mariadb -uroot -p'MYSQL_ROOT_PASSWORD' -h localhost" + echo "or" + echo "mariadb -uxxx -p'yyy' -h mariadb where xxx is in /run/secrets/mysql-user and yyy in /run/secrets/mysql-password" echo "ls /var/lib/mysql" echo echo "*** You can connect to the docker Dolibarr with:" diff --git a/test.sh b/test.sh index 9b0f2ce..3888094 100755 --- a/test.sh +++ b/test.sh @@ -13,12 +13,17 @@ BASE_DIR="$( cd "$(dirname "$0")" && pwd )" DOLI_VER=${1} PHP_VER=${2:-""} +echo "Test - working in $BASE_DIR" + if [ "${DOLI_VER}" = "" ]; then - echo "Usage: sudo test.sh develop" - echo " sudo test.sh 18.0.5 8.1" + echo "Usage: sudo test.sh dolversion [phpversion]" + echo " The couple dolversion/phpversion must be an existing couple into /images directory." + echo "Example: sudo test.sh develop" + echo " sudo test.sh 18.0.5 8.1" exit fi +# Create links of images into docker-compose-links rm -rf "${BASE_DIR}/docker-compose-links/" && mkdir "${BASE_DIR}/docker-compose-links" # shellcheck disable=SC2044 @@ -45,17 +50,23 @@ echo "Testing for:" echo " - Dolibarr ${DOLI_VER}" if [ "${PHP_VER}" = "" ]; then echo " - PHP most recent" - echo "Building image ..." + echo "Stopping existing image (if exists) ..." echo "DOLI_VERSION=${DOLI_VER} PHP_VERSION='' $dockerComposeBin -f '${BASE_DIR}/docker-compose.yml' [down|...]" DOLI_VERSION=${DOLI_VER} PHP_VERSION="" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" down 1>/dev/null + echo "Building image using docker-compose.yml in $BASE_DIR..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" build web + echo "Starting image ..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" up --force-recreate web cron + echo "Stopping image ..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" down else echo " - PHP ${PHP_VER}" - echo "Building image ..." + echo "Stopping existing image (if exists) ..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="-php${PHP_VER}" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" down 1>/dev/null + echo "Building image using docker-compose.yml in $BASE_DIR..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="-php${PHP_VER}" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" build web + echo "Starting image ..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="-php${PHP_VER}" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" up --force-recreate web cron + echo "Stopping image ..." DOLI_VERSION=${DOLI_VER} PHP_VERSION="-php${PHP_VER}" $dockerComposeBin -f "${BASE_DIR}/docker-compose.yml" down fi diff --git a/update.sh b/update.sh index 803611a..13e8abb 100755 --- a/update.sh +++ b/update.sh @@ -1,7 +1,7 @@ #!/bin/bash # -# Run this script to generate all files found into images directory, used for each image. -# The source files are the files into the root. +# Run this script to generate all files (Dockerfile, docker-init.php, docker-run.php) found into images directory, +# used for each image. The source files are the files into the root. # set -e