diff --git a/bitnami/wordpress/5/debian-9/Dockerfile b/bitnami/wordpress/5/debian-9/Dockerfile index 16d0bf8ab544..e5c9809bd6d5 100644 --- a/bitnami/wordpress/5/debian-9/Dockerfile +++ b/bitnami/wordpress/5/debian-9/Dockerfile @@ -1,21 +1,43 @@ -FROM bitnami/minideb-extras:stretch-r494 +FROM bitnami/minideb:stretch LABEL maintainer "Bitnami " -ENV PATH="/opt/bitnami/apache/bin:/opt/bitnami/php/bin:/opt/bitnami/php/sbin:/opt/bitnami/wp-cli/bin:/opt/bitnami/mysql/bin:$PATH" +ENV PATH="/opt/bitnami/apache/bin:/opt/bitnami/php/bin:/opt/bitnami/php/sbin:/opt/bitnami/wp-cli/bin:/opt/bitnami/mysql/bin:/opt/bitnami/nami/bin:$PATH" +COPY prebuildfs / # Install required system packages and dependencies -RUN install_packages libbz2-1.0 libc6 libcomerr2 libcurl3 libexpat1 libffi6 libfreetype6 libgcc1 libgcrypt20 libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libhogweed4 libicu57 libidn11 libidn2-0 libjpeg62-turbo libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 liblzma5 libmemcached11 libmemcachedutil2 libncurses5 libnettle6 libnghttp2-14 libp11-kit0 libpcre3 libpng16-16 libpq5 libpsl5 libreadline7 librtmp1 libsasl2-2 libsqlite3-0 libssh2-1 libssl1.0.2 libssl1.1 libstdc++6 libsybdb5 libtasn1-6 libtidy5 libtinfo5 libunistring0 libxml2 libxslt1.1 libzip4 zlib1g +RUN install_packages ca-certificates curl dirmngr gnupg libbz2-1.0 libc6 libcomerr2 libcurl3 libexpat1 libffi6 libfreetype6 libgcc1 libgcrypt20 libgmp10 libgnutls30 libgpg-error0 libgssapi-krb5-2 libhogweed4 libicu57 libidn11 libidn2-0 libjpeg62-turbo libk5crypto3 libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.4-2 liblzma5 libmemcached11 libmemcachedutil2 libncurses5 libnettle6 libnghttp2-14 libp11-kit0 libpcre3 libpng16-16 libpq5 libpsl5 libreadline7 librtmp1 libsasl2-2 libsqlite3-0 libssh2-1 libssl1.0.2 libssl1.1 libstdc++6 libsybdb5 libtasn1-6 libtidy5 libtinfo5 libunistring0 libxml2 libxslt1.1 libzip4 procps unzip zlib1g +RUN curl --silent -L https://nami-prod.s3.amazonaws.com/tools/nami/releases/nami-1.0.0-1-linux-x64.tar.gz > /tmp/nami-linux-x64.tar.gz && \ + echo "80488279b056d5e9c183fe34097c5f496715ab16a602afcc9f78d59f15139a16 /tmp/nami-linux-x64.tar.gz" | sha256sum --check && \ + mkdir -p /opt/bitnami/nami /opt/bitnami/licenses && \ + tar xzf /tmp/nami-linux-x64.tar.gz --strip 1 -C /opt/bitnami/nami && \ + rm /tmp/nami-linux-x64.tar.gz && \ + curl --silent -L https://raw.githubusercontent.com/bitnami/nami/master/COPYING > /opt/bitnami/licenses/nami-1.0.0-1.txt RUN bitnami-pkg unpack apache-2.4.41-4 --checksum 496e9cc3e12fd38832aae5dc1873cb4593666e6146379f55b2312908917eb666 RUN bitnami-pkg unpack php-7.3.13-0 --checksum 5e55d9741383f32ea8fadfbeae5a6fd9b86f188c67e9839e26449f80dd3addef RUN bitnami-pkg install wp-cli-2.4.0-0 --checksum 3bf68efbc817708e466a6ba32dd8ec46408931c38b7e568c76a7bc2c76319578 RUN bitnami-pkg unpack mysql-client-10.3.21-0 --checksum 19c6b964f289772a4e5963e22929133fa65222f66752eb29af715ce3d0b7ef0e RUN bitnami-pkg install libphp-7.3.13-2 --checksum cdad3af7b23f54dbcf13818651979d7f23324c6092e5bde760eee1be1a740346 RUN bitnami-pkg unpack wordpress-5.3.2-1 --checksum 77fe90ea8646858aeb9264680209fe585d34d9d1523b7b154c956283637458b6 +RUN apt-get update && apt-get upgrade && \ + rm -r /var/lib/apt/lists /var/cache/apt/archives +RUN curl --silent -L https://github.com/tianon/gosu/releases/download/1.11/gosu-amd64 > /usr/local/bin/gosu && \ + echo 0b843df6d86e270c5b0f5cbd3c326a04e18f4b7f9b8457fa497b0454c4b138d7 /usr/local/bin/gosu | sha256sum --check && \ + chmod u+x /usr/local/bin/gosu && \ + mkdir -p /opt/bitnami/licenses && \ + curl --silent -L https://raw.githubusercontent.com/tianon/gosu/master/LICENSE > /opt/bitnami/licenses/gosu-1.11.txt +RUN for server in "ha.pool.sks-keyservers.net" "hkp://p80.pool.sks-keyservers.net:80" "keyserver.ubuntu.com" "hkp://keyserver.ubuntu.com:80" "pgp.mit.edu"; do gpg --keyserver $server --recv-keys 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 && break || : ; done && \ + gpg --fingerprint 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 | grep -q "6380 DC42 8747 F6C3 93FE ACA5 9A84 159D 7001 A4E5" && \ + curl --silent -L https://github.com/krallin/tini/releases/download/v0.13.2/tini.asc > /tmp/tini.asc && \ + curl --silent -L https://github.com/krallin/tini/releases/download/v0.13.2/tini > /usr/local/bin/tini && \ + gpg --verify /tmp/tini.asc /usr/local/bin/tini && \ + chmod +x /usr/local/bin/tini && \ + mkdir -p /opt/bitnami/licenses && \ + curl --silent -L https://raw.githubusercontent.com/krallin/tini/master/LICENSE > /opt/bitnami/licenses/tini-0.13.2.txt COPY rootfs / ENV ALLOW_EMPTY_PASSWORD="no" \ BITNAMI_APP_NAME="wordpress" \ - BITNAMI_IMAGE_VERSION="5.3.2-debian-9-r22" \ + BITNAMI_IMAGE_VERSION="5.3.2-debian-9-r23" \ MARIADB_HOST="mariadb" \ MARIADB_PORT_NUMBER="3306" \ MARIADB_ROOT_PASSWORD="" \ diff --git a/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/functions b/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/functions new file mode 100644 index 000000000000..6e9168c5577b --- /dev/null +++ b/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/functions @@ -0,0 +1,121 @@ +#!/bin/bash + +[[ ${BASH_DEBUG:-false} = true ]] && set -x + +# Constants +MODULE="$(basename "$0")" +BITNAMI_PREFIX=/opt/bitnami + +# Color Palette +RESET='\033[0m' +BOLD='\033[1m' + +## Foreground +BLACK='\033[38;5;0m' +RED='\033[38;5;1m' +GREEN='\033[38;5;2m' +YELLOW='\033[38;5;3m' +BLUE='\033[38;5;4m' +MAGENTA='\033[38;5;5m' +CYAN='\033[38;5;6m' +WHITE='\033[38;5;7m' + +## Background +ON_BLACK='\033[48;5;0m' +ON_RED='\033[48;5;1m' +ON_GREEN='\033[48;5;2m' +ON_YELLOW='\033[48;5;3m' +ON_BLUE='\033[48;5;4m' +ON_MAGENTA='\033[48;5;5m' +ON_CYAN='\033[48;5;6m' +ON_WHITE='\033[48;5;7m' + +# Functions + +######################## +# Print to STDERR +# Arguments: +# Message to print +# Returns: +# None +######################### +stderr_print() { + printf "%b\\n" "${*}" >&2 +} + +######################## +# Log message +# Arguments: +# Message to log +# Returns: +# None +######################### +log() { + stderr_print "${NAMI_DEBUG:+${CYAN}${MODULE:-} ${MAGENTA}$(date "+%T.%2N ")}${RESET}${*}" +} +######################## +# Log an 'info' message +# Arguments: +# Message to log +# Returns: +# None +######################### +info() { + log "${GREEN}INFO ${RESET} ==> ${*}" +} +######################## +# Log message +# Arguments: +# Message to log +# Returns: +# None +######################### +warn() { + log "${YELLOW}WARN ${RESET} ==> ${*}" +} +######################## +# Log an 'error' message +# Arguments: +# Message to log +# Returns: +# None +######################### +error() { + log "${RED}ERROR${RESET} ==> ${*}" +} +######################## +# Print the welcome page +# Globals: +# DISABLE_WELCOME_MESSAGE +# BITNAMI_APP_NAME +# Arguments: +# None +# Returns: +# None +######################### +print_welcome_page() { + if [[ -z "${DISABLE_WELCOME_MESSAGE:-}" ]]; then + if [[ -n "$BITNAMI_APP_NAME" ]]; then + print_image_welcome_page + fi + fi +} +######################## +# Print the welcome page for a Bitnami Docker image +# Globals: +# BITNAMI_APP_NAME +# Arguments: +# None +# Returns: +# None +######################### +print_image_welcome_page() { + local github_url="https://github.com/bitnami/bitnami-docker-${BITNAMI_APP_NAME}" + + log "" + log "${BOLD}Welcome to the Bitnami ${BITNAMI_APP_NAME} container${RESET}" + log "Subscribe to project updates by watching ${BOLD}${github_url}${RESET}" + log "Submit issues and feature requests at ${BOLD}${github_url}/issues${RESET}" + log "Send us your feedback at ${BOLD}containers@bitnami.com${RESET}" + log "" +} diff --git a/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/helpers b/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/helpers new file mode 100644 index 000000000000..da35a1975ec6 --- /dev/null +++ b/bitnami/wordpress/5/debian-9/prebuildfs/opt/bitnami/base/helpers @@ -0,0 +1,40 @@ +#!/bin/bash + +. /opt/bitnami/base/functions + +######################## +# Helper function to initialize a single nami module +# Arguments: +# Module to initialize +# Returns: +# None +# Description: +# Initialize an unpacked nami module with the `nami initialize` command. +# Command arguments can be specified as function argumnts after the module name. +# `--log-level trace` flag is added to the command if `NAMI_DEBUG` env variable exists. +# The log level can be overriden using the `NAMI_LOG_LEVEL` env variable. +######################### +nami_initialize_one() { + local module="${1:?module not specified}" + if nami inspect $module | grep -q '"lifecycle": "unpacked"'; then + local inputs= + if [[ -f "/${module}-inputs.json" ]]; then + inputs="--inputs-file=/${module}-inputs.json" + fi + nami ${NAMI_DEBUG:+--log-level ${NAMI_LOG_LEVEL:-trace}} initialize $module $inputs "${@:2}" + fi +} + +######################## +# Helper function to initialize one or more nami modules +# Arguments: +# Module to initialize +# Returns: +# None +######################### +nami_initialize() { + local module="${1:?module not specified}" + for module in "${@}"; do + nami_initialize_one $module + done +} diff --git a/bitnami/wordpress/5/debian-9/prebuildfs/usr/sbin/bitnami-pkg b/bitnami/wordpress/5/debian-9/prebuildfs/usr/sbin/bitnami-pkg new file mode 100755 index 000000000000..6c6533be7d84 --- /dev/null +++ b/bitnami/wordpress/5/debian-9/prebuildfs/usr/sbin/bitnami-pkg @@ -0,0 +1,205 @@ +#!/bin/bash -e +. /opt/bitnami/base/functions + +print_usage() { + log "Usage: bitnami-pkg - [OPTIONS] -- [ARGS]" + log "" + log "Download and install Bitnami packages" + log "" + log "Commands:" + log " install Download and install a package." + log " unpack Download and unpack a package." + log "" + log "Options:" + log " -b, --bucket Package release bucket (default: stacksmith)." + log " -c, --checksum SHA256 verification checksum." + log " -h, --help Show this help message and exit." + log "" + log "If the package is already available in the /tmp/bitnami/pkg/cache/" + log "directory, the download will be skipped. If there is a corresponding" + log "file of the same name post-fixed with .sha256 in the directory," + log "that sha will be used instead of the --checksum option." + log "" + log "Examples:" + log " - Unpack package" + log " \$ bitnami-pkg unpack nginx-1.9.10-0" + log "" + log " - Verify and Install package" + log " \$ bitnami-pkg install nginx-1.9.10-0 --checksum 15565d06b18c2e3710fc08e579ddb3d0e39aa663264a0f7404f0743cb4cdb58d" + log "" + log " - Install package with arguments" + log " \$ bitnami-pkg install mariadb-10.1.11-0 -- --password bitnami" + log "" + log " - Install package from testing" + log " \$ bitnami-pkg install mariadb-10.1.11-0 --bucket testing" + log "" +} + +identify_distro() { + distro="${IMAGE_OS:-unknown}" + if [ "${distro}" == "unknown" -a -f /etc/os-release ]; then + distro="$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | cut -d'"' -f2)-$(grep "^VERSION_ID=" /etc/os-release | cut -d'=' -f2 | cut -d'"' -f2 | cut -d'.' -f1)" + fi + echo "$distro" +} + +identify_arch() { + local arch=$(arch) + + case "${arch}" in + ppc64le) + ;; # no-op + x86_64) + case $(identify_distro) in + debian-*) + arch=amd64 + ;; + ol-*) + arch=x86_64 + ;; + rhel-*) + arch=x86_64 + ;; + esac + ;; + *) + arch="unknown" + ;; + esac + echo $arch +} + +# break up command line for easy parsing and check legal options +ARGS=$(getopt -o b:c:h -l "bucket:,checksum:,help" -n "bitnami-pkg" -- "$@") +if [ $? -ne 0 ]; +then + exit 1 +fi + +eval set -- "$ARGS"; +while true; do + case "$1" in + -b|--bucket) + shift + if [ -n "$1" ]; then + RELEASE_BUCKET=$1 + shift + fi + ;; + -c|--checksum) + shift + if [ -n "$1" ]; then + PACKAGE_SHA256=$1 + shift + fi + ;; + -h|--help) + print_usage + exit 0 + ;; + --) + shift + break + ;; + esac +done + +# weed out unrecognized commands +case "$1" in + install|unpack) ;; + *) + error "Unrecognized command: $1" + print_usage + exit 1 + ;; +esac + +# install/unpack command need to be supplied a package name +if [ $# -lt 2 ]; then + print_usage + exit 1 +fi + +INSTALL_ROOT=/tmp/bitnami/pkg/install +CACHE_ROOT=/tmp/bitnami/pkg/cache + +PACKAGE="$2-linux-$(identify_arch)-$(identify_distro)" +PACKAGE_ARGS=${@:3} +PACKAGE_NAME=$(echo $PACKAGE | sed 's/-[0-9].*//') +RELEASE_BUCKET=${RELEASE_BUCKET:-stacksmith} + +mkdir -p $INSTALL_ROOT +cd $INSTALL_ROOT + +info "Downloading $PACKAGE package" +if [ -f $CACHE_ROOT/$PACKAGE.tar.gz ]; then + info "$CACHE_ROOT/$PACKAGE.tar.gz already exists, skipping download." + cp $CACHE_ROOT/$PACKAGE.tar.gz . + if [ -f $CACHE_ROOT/$PACKAGE.tar.gz.sha256 ]; then + info "Using the local sha256 from $CACHE_ROOT/$PACKAGE.tar.gz.sha256" + PACKAGE_SHA256=$(cat $CACHE_ROOT/$PACKAGE.tar.gz.sha256) + fi +else + # display cURL progress bar when a tty is attached + if tty -s; then + CURL_ARGS="-#" + else + CURL_ARGS="-sS" + fi + if ! curl $CURL_ARGS -LOf "https://downloads.bitnami.com/files/$RELEASE_BUCKET/$PACKAGE.tar.gz"; then + warn "Package name '$PACKAGE' does not exist, will try '${PACKAGE%-$(identify_distro)}'..." + if curl $CURL_ARGS -LOf "https://downloads.bitnami.com/files/$RELEASE_BUCKET/${PACKAGE%-$(identify_distro)}.tar.gz"; then + PACKAGE="${PACKAGE%-$(identify_distro)}" + else + error "Could not find the requested package..." + exit 1 + fi + fi +fi + +if ! tar tzf $PACKAGE.tar.gz >/dev/null 2>&1; then + error "Invalid or corrupt '$PACKAGE' package." + exit 1 +fi + +if [ "$PACKAGE_SHA256" ]; then + info "Verifying package integrity" + echo "$PACKAGE_SHA256 $PACKAGE.tar.gz" | sha256sum -c - +fi + +# If the tarball has too many files, it can trigger a bug +# in overlayfs when using tar. Install bsdtar in the container image +# to workaround it. As the overhead is too big (~40 MB), it is not added by +# default. Source: https://github.com/coreos/bugs/issues/1095 +if which bsdtar > /dev/null; then + bsdtar -xf $PACKAGE.tar.gz +else + tar xzf $PACKAGE.tar.gz +fi + +case "$1" in + install) info "Installing $PACKAGE" ;; + unpack) info "Unpacking $PACKAGE" ;; +esac +nami $1 $PACKAGE $PACKAGE_ARGS + +rm -rf $INSTALL_ROOT + +if [ "$BITNAMI_PKG_EXTRA_DIRS" ]; then + info "Creating extra directories" + for i in ${BITNAMI_PKG_EXTRA_DIRS}; do + mkdir -p $i + done +fi + +if [ "$BITNAMI_PKG_CHMOD" ]; then + DIRS="/.nami /bitnami $BITNAMI_PKG_EXTRA_DIRS" + if ! [[ $PACKAGE_NAME =~ .*-client ]]; then + mkdir -p /bitnami/$PACKAGE_NAME + fi + # We need to be in $HOME in order to nami inspect works + cd $HOME + DIRS+=" $(nami inspect $PACKAGE_NAME | grep -e 'installdir' | cut -f4 -d\")" + info "Fixing permissions: chmod $BITNAMI_PKG_CHMOD $DIRS" + chmod $BITNAMI_PKG_CHMOD $DIRS +fi diff --git a/bitnami/wordpress/README.md b/bitnami/wordpress/README.md index 4697991aa7ad..be6375ae1ef4 100644 --- a/bitnami/wordpress/README.md +++ b/bitnami/wordpress/README.md @@ -39,7 +39,7 @@ Learn more about the Bitnami tagging policy and the difference between rolling t * [`5-ol-7`, `5.3.2-ol-7-r30` (5/ol-7/Dockerfile)](https://github.com/bitnami/bitnami-docker-wordpress/blob/5.3.2-ol-7-r30/5/ol-7/Dockerfile) -* [`5-debian-9`, `5.3.2-debian-9-r22`, `5`, `5.3.2`, `5.3.2-r22`, `latest` (5/debian-9/Dockerfile)](https://github.com/bitnami/bitnami-docker-wordpress/blob/5.3.2-debian-9-r22/5/debian-9/Dockerfile) +* [`5-debian-9`, `5.3.2-debian-9-r23`, `5`, `5.3.2`, `5.3.2-r23`, `latest` (5/debian-9/Dockerfile)](https://github.com/bitnami/bitnami-docker-wordpress/blob/5.3.2-debian-9-r23/5/debian-9/Dockerfile) Subscribe to project updates by watching the [bitnami/wordpress GitHub repo](https://github.com/bitnami/bitnami-docker-wordpress).