From d8d3a4556ff6cf9fc631ff210de34981e8853e52 Mon Sep 17 00:00:00 2001 From: Bitnami Bot Date: Tue, 21 Nov 2017 15:18:26 +0000 Subject: [PATCH] 8.4.2-r1 release Drupal expects an existing database to be configured with. --- bitnami/drupal/8/Dockerfile | 20 +++-- bitnami/drupal/8/docker-compose.yml | 8 ++ bitnami/drupal/8/rootfs/app-entrypoint.sh | 3 +- bitnami/drupal/8/rootfs/drupal-inputs.json | 5 +- bitnami/drupal/8/rootfs/init.sh | 29 +++++++ .../drupal/8/rootfs/mysql-client-inputs.json | 11 +++ bitnami/drupal/README.md | 80 +++++++++++++++---- bitnami/drupal/circle.yml | 2 - 8 files changed, 132 insertions(+), 26 deletions(-) create mode 100644 bitnami/drupal/8/rootfs/init.sh create mode 100644 bitnami/drupal/8/rootfs/mysql-client-inputs.json diff --git a/bitnami/drupal/8/Dockerfile b/bitnami/drupal/8/Dockerfile index 964cafbd8eb9..28299c6eda9e 100644 --- a/bitnami/drupal/8/Dockerfile +++ b/bitnami/drupal/8/Dockerfile @@ -5,24 +5,32 @@ LABEL maintainer "Bitnami " RUN install_packages libapr1 libaprutil1 libbz2-1.0 libc6 libcomerr2 libcurl3 libexpat1 libffi6 libfreetype6 libgcc1 libgcrypt20 libgmp10 libgnutls-deb0-28 libgpg-error0 libgssapi-krb5-2 libhogweed2 libicu52 libidn11 libjpeg62-turbo libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 liblzma5 libmcrypt4 libncurses5 libnettle4 libp11-kit0 libpcre3 libpng12-0 libpq5 libreadline6 librtmp1 libsasl2-2 libssh2-1 libssl1.0.0 libstdc++6 libsybdb5 libtasn1-6 libtidy-0.99-0 libtinfo5 libuuid1 libxml2 libxslt1.1 zlib1g RUN bitnami-pkg unpack apache-2.4.29-0 --checksum 38af9f5ee6088655536238d9f70f4ce7fd6047e1c84fd5b02fa351efbc4f60c6 RUN bitnami-pkg unpack php-7.0.25-0 --checksum 06b7eec17da189e1d7c4768d2a8ccc22aeae42b2261af52956c49f32840910ac -RUN bitnami-pkg install mysql-client-10.1.28-0 --checksum 8a0ccfd6a62ffccdb25fcf39754c2526b120f416dd390194e8d6edd2ec8ddcee +RUN bitnami-pkg unpack mysql-client-10.1.29-0 --checksum 4b29436697f5fcdf38f3c9713a27208304fe36b858afc5aa5a7a4d3f17d84bac RUN bitnami-pkg install libphp-7.0.25-0 --checksum 830adc5002b70b4000921b85590ef70390189e1b7b498e4c71515c9ba8af2a70 RUN bitnami-pkg install drush-8.1.15-0 --checksum 3f3b9931aebc37c5a63dc6bc2ae1657dc0152054b787e64cd19b33a9e56024c3 -RUN bitnami-pkg unpack drupal-8.4.2-0 --checksum 26f870a2822d13d71a35c9d9eede244b03bb1117bce584627f1c497829a57b40 +RUN bitnami-pkg unpack drupal-8.4.2-1 --checksum 7c86389c5bea5584bf8298da5e2dd2ad98d8c20685a966dbc82d88b53411f943 COPY rootfs / -ENV APACHE_HTTPS_PORT_NUMBER="443" \ +ENV ALLOW_EMPTY_PASSWORD="no" \ + APACHE_HTTPS_PORT_NUMBER="443" \ APACHE_HTTP_PORT_NUMBER="80" \ BITNAMI_APP_NAME="drupal" \ - BITNAMI_IMAGE_VERSION="8.4.2-r0" \ + BITNAMI_IMAGE_VERSION="8.4.2-r1" \ + DRUPAL_DATABASE_NAME="bitnami_drupal" \ + DRUPAL_DATABASE_PASSWORD="" \ + DRUPAL_DATABASE_USER="bn_drupal" \ DRUPAL_EMAIL="user@example.com" \ DRUPAL_PASSWORD="bitnami" \ DRUPAL_USERNAME="user" \ MARIADB_HOST="mariadb" \ - MARIADB_PASSWORD="" \ MARIADB_PORT_NUMBER="3306" \ - MARIADB_USER="root" \ + MARIADB_ROOT_PASSWORD="" \ + MARIADB_ROOT_USER="root" \ + MYSQL_CLIENT_CREATE_DATABASE_NAME="" \ + MYSQL_CLIENT_CREATE_DATABASE_PASSWORD="" \ + MYSQL_CLIENT_CREATE_DATABASE_PRIVILEGES="ALL" \ + MYSQL_CLIENT_CREATE_DATABASE_USER="" \ PATH="/opt/bitnami/apache/bin:/opt/bitnami/php/bin:/opt/bitnami/mysql/bin:/opt/bitnami/drush:$PATH" EXPOSE 80 443 diff --git a/bitnami/drupal/8/docker-compose.yml b/bitnami/drupal/8/docker-compose.yml index 05036dff4e40..a616c5353264 100644 --- a/bitnami/drupal/8/docker-compose.yml +++ b/bitnami/drupal/8/docker-compose.yml @@ -5,12 +5,20 @@ services: image: 'bitnami/mariadb:latest' environment: - ALLOW_EMPTY_PASSWORD=yes + - MARIADB_USER=bn_drupal + - MARIADB_DATABASE=bitnami_drupal volumes: - 'mariadb_data:/bitnami' drupal: image: 'bitnami/drupal:8' labels: kompose.service.type: nodeport + environment: + - MARIADB_HOST=mariadb + - MARIADB_PORT_NUMBER=3306 + - DRUPAL_DATABASE_USER=bn_drupal + - DRUPAL_DATABASE_NAME=bitnami_drupal + - ALLOW_EMPTY_PASSWORD=yes ports: - '80:80' - '443:443' diff --git a/bitnami/drupal/8/rootfs/app-entrypoint.sh b/bitnami/drupal/8/rootfs/app-entrypoint.sh index f313d510197a..3a2d75fca6bf 100755 --- a/bitnami/drupal/8/rootfs/app-entrypoint.sh +++ b/bitnami/drupal/8/rootfs/app-entrypoint.sh @@ -6,7 +6,8 @@ print_welcome_page if [[ "$1" == "nami" && "$2" == "start" ]] || [[ "$1" == "/run.sh" ]]; then - nami_initialize apache php drupal + . /init.sh + nami_initialize apache php mysql-client drupal info "Starting drupal... " fi diff --git a/bitnami/drupal/8/rootfs/drupal-inputs.json b/bitnami/drupal/8/rootfs/drupal-inputs.json index 4fa539abb257..fd5d8df8adba 100644 --- a/bitnami/drupal/8/rootfs/drupal-inputs.json +++ b/bitnami/drupal/8/rootfs/drupal-inputs.json @@ -1,8 +1,9 @@ { - "databaseAdminPassword": "{{$global.env.MARIADB_PASSWORD}}", - "databaseAdminUser": "{{$global.env.MARIADB_USER}}", + "databaseName": "{{$global.env.DRUPAL_DATABASE_NAME}}", + "databasePassword": "{{$global.env.DRUPAL_DATABASE_PASSWORD}}", "databaseServerHost": "{{$global.env.MARIADB_HOST}}", "databaseServerPort": "{{$global.env.MARIADB_PORT_NUMBER}}", + "databaseUser": "{{$global.env.DRUPAL_DATABASE_USER}}", "email": "{{$global.env.DRUPAL_EMAIL}}", "password": "{{$global.env.DRUPAL_PASSWORD}}", "username": "{{$global.env.DRUPAL_USERNAME}}" diff --git a/bitnami/drupal/8/rootfs/init.sh b/bitnami/drupal/8/rootfs/init.sh new file mode 100644 index 000000000000..9f7a345bc66a --- /dev/null +++ b/bitnami/drupal/8/rootfs/init.sh @@ -0,0 +1,29 @@ +## +## @brief Helper function to show an error when a password is empty and exit +## param $1 Input name +## +empty_password_error() { + error "The $1 environment variable is empty or not set. Set the environment variable ALLOW_EMPTY_PASSWORD=yes to allow the container to be started with blank passwords. This is recommended only for development." + exit 1 +} + +## +## @brief Helper function to show a warning when the ALLOW_EMPTY_PASSWORD flag is enabled +## +empty_password_enabled_warn() { + warn "You set the environment variable ALLOW_EMPTY_PASSWORD=${ALLOW_EMPTY_PASSWORD}. For safety reasons, do not use this flag in a production environment." +} + +# Validate passwords +if [[ "$ALLOW_EMPTY_PASSWORD" =~ ^(yes|Yes|YES)$ ]]; then + empty_password_enabled_warn +else + # Database creation by MySQL client + if [[ -n "$MYSQL_CLIENT_CREATE_DATABASE_USER" && -z "$MYSQL_CLIENT_CREATE_DATABASE_PASSWORD" ]]; then + empty_password_error MYSQL_CLIENT_CREATE_DATABASE_PASSWORD + fi + # Drupal database + if [[ -z "$DRUPAL_DATABASE_PASSWORD" ]]; then + empty_password_error DRUPAL_DATABASE_PASSWORD + fi +fi diff --git a/bitnami/drupal/8/rootfs/mysql-client-inputs.json b/bitnami/drupal/8/rootfs/mysql-client-inputs.json new file mode 100644 index 000000000000..6a20ec0837a0 --- /dev/null +++ b/bitnami/drupal/8/rootfs/mysql-client-inputs.json @@ -0,0 +1,11 @@ +{ + "allowEmptyPassword": "{{$global.env.ALLOW_EMPTY_PASSWORD}}", + "createDatabaseName": "{{$global.env.MYSQL_CLIENT_CREATE_DATABASE_NAME}}", + "createDatabasePassword": "{{$global.env.MYSQL_CLIENT_CREATE_DATABASE_PASSWORD}}", + "createDatabasePrivileges": "{{$global.env.MYSQL_CLIENT_CREATE_DATABASE_PRIVILEGES}}", + "createDatabaseUser": "{{$global.env.MYSQL_CLIENT_CREATE_DATABASE_USER}}", + "host": "{{$global.env.MARIADB_HOST}}", + "port": "{{$global.env.MARIADB_PORT_NUMBER}}", + "rootPassword": "{{$global.env.MARIADB_ROOT_PASSWORD}}", + "rootUser": "{{$global.env.MARIADB_ROOT_USER}}" +} \ No newline at end of file diff --git a/bitnami/drupal/README.md b/bitnami/drupal/README.md index 21cd6e596d73..62ad51f7d4d6 100644 --- a/bitnami/drupal/README.md +++ b/bitnami/drupal/README.md @@ -57,11 +57,20 @@ services: image: 'bitnami/mariadb:latest' environment: - ALLOW_EMPTY_PASSWORD=yes + - MARIADB_USER=bn_drupal + - MARIADB_DATABASE=bitnami_drupal volumes: - 'mariadb_data:/bitnami' - drupal: - image: 'bitnami/drupal:latest' + image: 'bitnami/drupal:8' + labels: + kompose.service.type: nodeport + environment: + - MARIADB_HOST=mariadb + - MARIADB_PORT_NUMBER=3306 + - DRUPAL_DATABASE_USER=bn_drupal + - DRUPAL_DATABASE_NAME=bitnami_drupal + - ALLOW_EMPTY_PASSWORD=yes ports: - '80:80' - '443:443' @@ -69,7 +78,6 @@ services: - 'drupal_data:/bitnami' depends_on: - mariadb - volumes: mariadb_data: driver: local @@ -87,21 +95,33 @@ If you want to run the application manually instead of using docker-compose, the $ docker network create drupal-tier ``` -2. Start a MariaDB database in the network generated: +2. Create a volume for MariaDB persistence and create a MariaDB container ```bash - $ docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes --net drupal-tier bitnami/mariadb:latest + $ docker volume create --name mariadb_data + $ docker run -d --name mariadb \ + -e ALLOW_EMPTY_PASSWORD=yes \ + -e MARIADB_USER=bn_drupal \ + -e MARIADB_DATABASE=bitnami_drupal \ + --net drupal-tier \ + --volume mariadb_data:/bitnami \ + bitnami/mariadb:latest ``` - *Note:* You need to give the container a name in order to Drupal to resolve the host - -3. Run the Drupal container: +3. Create volumes for Drupal persistence and launch the container ```bash - $ docker run -d -p 80:80 -p 443:443 --name drupal --net drupal-tier bitnami/drupal:latest + $ docker volume create --name drupal_data + $ docker run -d --name drupal -p 80:80 -p 443:443 \ + -e ALLOW_EMPTY_PASSWORD=yes \ + -e DRUPAL_DATABASE_USER=bn_drupal \ + -e DRUPAL_DATABASE_NAME=bitnami_drupal \ + --net drupal-tier \ + --volume drupal_data:/bitnami \ + bitnami/drupal:latest ``` -Then you can access your application at http://your-ip/ +Access your application at http://your-ip/ ## Persisting your application @@ -125,6 +145,8 @@ services: image: 'bitnami/mariadb:latest' environment: - ALLOW_EMPTY_PASSWORD=yes + - MARIADB_USER=bn_drupal + - MARIADB_DATABASE=bitnami_drupal volumes: - '/path/to/mariadb-persistence:/bitnami' drupal: @@ -134,6 +156,10 @@ services: ports: - '80:80' - '443:443' + environment: + - DRUPAL_DATABASE_USER=bn_drupal + - DRUPAL_DATABASE_NAME=bitnami_drupal + - ALLOW_EMPTY_PASSWORD=yes volumes: - '/path/to/drupal-persistence:/bitnami' ``` @@ -149,7 +175,10 @@ services: 2. Create a MariaDB container with host volume: ```bash - $ docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes \ + $ docker run -d --name mariadb \ + -e ALLOW_EMPTY_PASSWORD=yes \ + -e MARIADB_USER=bn_drupal \ + -e MARIADB_DATABASE=bitnami_drupal \ --net drupal-tier \ --volume /path/to/mariadb-persistence:/bitnami \ bitnami/mariadb:latest @@ -161,6 +190,9 @@ services: ```bash $ docker run -d --name drupal -p 80:80 -p 443:443 \ + -e ALLOW_EMPTY_PASSWORD=yes \ + -e DRUPAL_DATABASE_USER=bn_drupal \ + -e DRUPAL_DATABASE_NAME=bitnami_drupal \ --net drupal-tier \ --volume /path/to/drupal-persistence:/bitnami \ bitnami/drupal:latest @@ -231,13 +263,31 @@ drupal: Available variables: +##### User and Site configuration + - `DRUPAL_USERNAME`: Drupal application username. Default: **user** - `DRUPAL_PASSWORD`: Drupal application password. Default: **bitnami** - `DRUPAL_EMAIL`: Drupal application email. Default: **user@example.com** - - `MARIADB_USER`: Root user for the MariaDB database. Default: **root** - - `MARIADB_PASSWORD`: Root password for the MariaDB. - - `MARIADB_HOST`: Hostname for MariaDB server. Default: **mariadb** - - `MARIADB_PORT_NUMBER`: Port used by MariaDB server. Default: **3306** + +##### Use an existing database + +- `MARIADB_HOST`: Hostname for MariaDB server. Default: **mariadb** +- `MARIADB_PORT_NUMBER`: Port used by MariaDB server. Default: **3306** +- `DRUPAL_DATABASE_NAME`: Database name that Drupal will use to connect with the database. Default: **bitnami_drupal** +- `DRUPAL_DATABASE_USER`: Database user that Drupal will use to connect with the database. Default: **bn_drupal** +- `DRUPAL_DATABASE_PASSWORD`: Database password that Drupal will use to connect with the database. No defaults. +- `ALLOW_EMPTY_PASSWORD`: It can be used to allow blank passwords. Default: **no** + +##### Create a database for Drupal using mysql-client + +- `MARIADB_HOST`: Hostname for MariaDB server. Default: **mariadb** +- `MARIADB_PORT_NUMBER`: Port used by MariaDB server. Default: **3306** +- `MARIADB_ROOT_USER`: Database admin user. Default: **root** +- `MARIADB_ROOT_PASSWORD`: Database password for the `MARIADB_ROOT_USER` user. No defaults. +- `MYSQL_CLIENT_CREATE_DATABASE_NAME`: New database to be created by the mysql client module. No defaults. +- `MYSQL_CLIENT_CREATE_DATABASE_USER`: New database user to be created by the mysql client module. No defaults. +- `MYSQL_CLIENT_CREATE_DATABASE_PASSWORD`: Database password for the `MYSQL_CLIENT_CREATE_DATABASE_USER` user. No defaults. +- `ALLOW_EMPTY_PASSWORD`: It can be used to allow blank passwords. Default: **no** # Contributing diff --git a/bitnami/drupal/circle.yml b/bitnami/drupal/circle.yml index ba9c96c9ae77..95572e940a28 100644 --- a/bitnami/drupal/circle.yml +++ b/bitnami/drupal/circle.yml @@ -8,8 +8,6 @@ jobs: RELEASE_SERIES_LIST: "8" LATEST_STABLE: "8" IMAGE_NAME: drupal - CHART_NAME: drupal - CHART_REPO: https://github.com/kubernetes/charts DOCKER_PROJECT: bitnami QUAY_PROJECT: bitnami GCLOUD_PROJECT: bitnami-containers