diff --git a/Dockerfile b/Dockerfile index 875f28d..ec7d45e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,17 @@ FROM php:5.6-apache +# Build-time metadata as defined at http://label-schema.org +# with added usage described in https://microbadger.com/#/labels +ARG BUILD_DATE +ARG VCS_REF +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.docker.dockerfile="/Dockerfile" \ + org.label-schema.name="Autopilot Pattern WordPress" \ + org.label-schema.url="https://github.com/autopilotpattern/wordpress" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-type="Git" \ + org.label-schema.vcs-url="https://github.com/autopilotpattern/wordpress" + RUN a2enmod rewrite # Install the PHP extensions we need, and other packages @@ -35,28 +47,39 @@ COPY bin /usr/local/bin COPY etc /etc # Add Containerpilot and its configuration -ENV CONTAINERPILOT_VER 2.0.1 +# Releases at https://github.com/joyent/containerpilot/releases +ENV CONTAINERPILOT_VER 2.3.0 ENV CONTAINERPILOT file:///etc/containerpilot.json -RUN export CONTAINERPILOT_CHECKSUM=a4dd6bc001c82210b5c33ec2aa82d7ce83245154 \ - && curl -Lso /tmp/containerpilot.tar.gz \ +RUN export CONTAINERPILOT_CHECKSUM=ec9dbedaca9f4a7a50762f50768cbc42879c7208 \ + && curl --retry 7 --fail -Lso /tmp/containerpilot.tar.gz \ "https://github.com/joyent/containerpilot/releases/download/${CONTAINERPILOT_VER}/containerpilot-${CONTAINERPILOT_VER}.tar.gz" \ && echo "${CONTAINERPILOT_CHECKSUM} /tmp/containerpilot.tar.gz" | sha1sum -c \ && tar zxf /tmp/containerpilot.tar.gz -C /usr/local/bin \ && rm /tmp/containerpilot.tar.gz +# Install Consul +# Releases at https://releases.hashicorp.com/consul +RUN export CONSUL_VERSION=0.6.4 \ + && export CONSUL_CHECKSUM=abdf0e1856292468e2c9971420d73b805e93888e006c76324ae39416edcf0627 \ + && curl --retry 7 --fail -vo /tmp/consul.zip "https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip" \ + && echo "${CONSUL_CHECKSUM} /tmp/consul.zip" | sha256sum -c \ + && unzip /tmp/consul -d /usr/local/bin \ + && rm /tmp/consul.zip \ + && mkdir /config + # Install Consul template # Releases at https://releases.hashicorp.com/consul-template/ -ENV CONSUL_TEMPLATE_VERSION 0.14.0 -ENV CONSUL_TEMPLATE_SHA1 7c70ea5f230a70c809333e75fdcff2f6f1e838f29cfb872e1420a63cdf7f3a78 -RUN curl --retry 7 -Lso /tmp/consul-template.zip "https://releases.hashicorp.com/consul-template/${CONSUL_TEMPLATE_VERSION}/consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip" \ - && echo "${CONSUL_TEMPLATE_SHA1} /tmp/consul-template.zip" | sha256sum -c \ +RUN export CONSUL_TEMPLATE_VERSION=0.14.0 \ + && export CONSUL_TEMPLATE_CHECKSUM=7c70ea5f230a70c809333e75fdcff2f6f1e838f29cfb872e1420a63cdf7f3a78 \ + && curl --retry 7 --fail -Lso /tmp/consul-template.zip "https://releases.hashicorp.com/consul-template/${CONSUL_TEMPLATE_VERSION}/consul-template_${CONSUL_TEMPLATE_VERSION}_linux_amd64.zip" \ + && echo "${CONSUL_TEMPLATE_CHECKSUM} /tmp/consul-template.zip" | sha256sum -c \ && unzip /tmp/consul-template.zip -d /usr/local/bin \ && rm /tmp/consul-template.zip # Install wp-cli, http://wp-cli.org ENV WP_CLI_CONFIG_PATH /var/www/html/wp-cli.yml -RUN curl -Ls -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ +RUN curl --retry 7 --fail -Ls -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ && chmod +x wp-cli.phar \ && mv wp-cli.phar /usr/local/bin/wp \ && wp --info --allow-root @@ -67,14 +90,14 @@ COPY /var/www/html /var/www/html RUN chown -R www-data:www-data /var/www/html/* # Install WordPress via wp-cli & move the default themes to our content dir -ENV WORDPRESS_VERSION 4.5.1 +ENV WORDPRESS_VERSION 4.5.3 RUN wp --allow-root core download --version=${WORDPRESS_VERSION} \ && mv /var/www/html/wordpress/wp-content/themes/* /var/www/html/content/themes/ # Install HyperDB, https://wordpress.org/plugins/hyperdb # Releases at https://wordpress.org/plugins/hyperdb/developers/ , though no SHA1 fingerprints are published -ENV HYPERDB_VERSION 1.1 -RUN curl -Ls -o /var/www/html/hyperdb.zip https://downloads.wordpress.org/plugin/hyperdb.${HYPERDB_VERSION}.zip \ +RUN export HYPERDB_VERSION=1.1 \ + && curl --retry 7 --fail -Ls -o /var/www/html/hyperdb.zip https://downloads.wordpress.org/plugin/hyperdb.${HYPERDB_VERSION}.zip \ && unzip hyperdb.zip \ && chown -R www-data:www-data /var/www/html/hyperdb \ && mv hyperdb/db.php /var/www/html/content/. \ @@ -82,7 +105,7 @@ RUN curl -Ls -o /var/www/html/hyperdb.zip https://downloads.wordpress.org/plugin && touch /var/www/html/content/db-config.php # Install ztollman's object-cache.php or object caching to memcached -RUN curl -Ls -o /var/www/html/content/object-cache.php https://raw.githubusercontent.com/tollmanz/wordpress-pecl-memcached-object-cache/master/object-cache.php +RUN curl --retry 7 --fail -Ls -o /var/www/html/content/object-cache.php https://raw.githubusercontent.com/tollmanz/wordpress-pecl-memcached-object-cache/master/object-cache.php # The volume is defined after we install everything VOLUME /var/www/html diff --git a/README.md b/README.md index ccbf9ba..b0411fc 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ [![DockerPulls](https://img.shields.io/docker/pulls/autopilotpattern/wordpress.svg)](https://registry.hub.docker.com/u/autopilotpattern/wordpress/) [![DockerStars](https://img.shields.io/docker/stars/autopilotpattern/wordpress.svg)](https://registry.hub.docker.com/u/autopilotpattern/wordpress/) -[![ImageLayers](https://badge.imagelayers.io/autopilotpattern/wordpress:latest.svg)](https://imagelayers.io/?images=autopilotpattern/wordpress:latest) +[![MicroBadger version](https://images.microbadger.com/badges/version/autopilotpattern/wordpress.svg)](http://microbadger.com/#/images/autopilotpattern/wordpress) +[![MicroBadger commit](https://images.microbadger.com/badges/commit/autopilotpattern/wordpress.svg)](http://microbadger.com/#/images/autopilotpattern/wordpress) --- diff --git a/docker-compose.yml b/docker-compose.yml index b22dc0d..64854a9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,8 @@ wordpress: restart: always mem_limit: 1g env_file: _env + environment: + - CONSUL_AGENT=1 ports: - 80 - 9090 @@ -19,6 +21,8 @@ nfs: restart: always mem_limit: 256m env_file: _env + environment: + - CONSUL_AGENT=1 expose: - 111 - 1892 @@ -35,6 +39,8 @@ mysql: restart: always mem_limit: 4g env_file: _env + environment: + - CONSUL_AGENT=1 expose: - 3306 labels: @@ -47,6 +53,8 @@ memcached: restart: always mem_limit: 512m env_file: _env + environment: + - CONSUL_AGENT=1 ports: - 11211 labels: @@ -62,6 +70,8 @@ nginx: - 80 - 9090 env_file: _env + environment: + - CONSUL_AGENT=1 labels: - triton.cns.services=nginx - com.docker.swarm.affinities=["container!=~*nginx*"] diff --git a/etc/containerpilot.json b/etc/containerpilot.json index 9bab09c..e599741 100644 --- a/etc/containerpilot.json +++ b/etc/containerpilot.json @@ -1,20 +1,10 @@ { - "consul": "{{ .CONSUL }}:8500", + "consul": "{{ if .CONSUL_AGENT }}localhost{{ else }}{{ .CONSUL }}{{ end }}:8500", "preStart": "/usr/local/bin/prestart.sh", "services": [ { "name": "wordpress", "port": 80, - "interfaces": [ - "eth0", - "eth1[1]", - "192.168.0.0/16", - "2001:db8::/64", - "eth2:inet", - "eth2:inet6", - "inet", - "inet6" - ], "health": "/usr/local/bin/health.sh", "poll": 10, "ttl": 25 @@ -37,6 +27,17 @@ "onChange": "/usr/local/bin/onchange-memcached.sh" } ], + "coprocesses": [{{ if .CONSUL_AGENT }} + { + "command": ["/usr/local/bin/consul", "agent", + "-data-dir=/data", + "-config-dir=/config", + "-rejoin", + "-retry-join", "{{ .CONSUL }}", + "-retry-max", "10", + "-retry-interval", "10s"], + "restarts": "unlimited" + }{{ end }}], "telemetry": { "port": 9090, "sensors": [ diff --git a/nginx/Dockerfile b/nginx/Dockerfile index 4303731..456c692 100644 --- a/nginx/Dockerfile +++ b/nginx/Dockerfile @@ -1,5 +1,17 @@ # a minimal Nginx container including containerbuddy and a simple virtulhost config FROM autopilotpattern/nginx:latest +# Build-time metadata as defined at http://label-schema.org +# with added usage described in https://microbadger.com/#/labels +ARG BUILD_DATE +ARG VCS_REF +LABEL org.label-schema.build-date=$BUILD_DATE \ + org.label-schema.docker.dockerfile="/nginx/Dockerfile" \ + org.label-schema.name="Autopilot Pattern Nginx for WordPress" \ + org.label-schema.url="https://github.com/autopilotpattern/wordpress" \ + org.label-schema.vcs-ref=$VCS_REF \ + org.label-schema.vcs-type="Git" \ + org.label-schema.vcs-url="https://github.com/autopilotpattern/wordpress" + # Add our configuration files COPY etc /etc