Re: [Wordpress-charmers] [Merge] ~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into ~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master

2020-01-13 Thread Tom Haddon
Some comments inline

Diff comments:

> diff --git a/Dockerfile b/Dockerfile
> new file mode 100644
> index 000..38866f4
> --- /dev/null
> +++ b/Dockerfile
> @@ -0,0 +1,55 @@
> +FROM ubuntu:bionic
> +
> +RUN echo 'debconf debconf/frontend select Noninteractive' | 
> debconf-set-selections
> +
> +RUN apt-get update && apt-get -y dist-upgrade \
> +&& apt-get --purge autoremove -y \
> +&& apt-get clean \
> +&& rm -rf /var/lib/apt/lists/*
> +
> +ENV APACHE_CONFDIR=/etc/apache2
> +ENV APACHE_ENVVARS=/etc/apache2/envvars
> +
> +RUN apt-get update \
> +&& apt-get install -y --no-install-recommends apache2 \

We should confirm if we want --no-install-recommends for all apt installs. If 
not, let's comment as to why.

> +&& rm -rf /var/lib/apt/lists/* \
> +&& sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' 
> "$APACHE_ENVVARS" \
> +&& . "$APACHE_ENVVARS" \
> +&& for dir in "$APACHE_LOCK_DIR" "$APACHE_RUN_DIR" "$APACHE_LOG_DIR"; do 
> rm -rvf "$dir"; mkdir -p "$dir"; chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" 
> "$dir"; chmod 777 "$dir";  done \
> +&& ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log" \
> +&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log" \
> +&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log" \
> +&& chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" 
> "$APACHE_LOG_DIR"
> +
> +RUN echo '' > 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tSetHandler application/x-httpd-php' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo 'DirectoryIndex disabled' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo 'DirectoryIndex index.php index.html' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tOptions -Indexes' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tAllowOverride All' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \

Let's switch to a file copy here.

> +&& a2enconf docker-php
> +
> +RUN apt-get update && apt-get install -y curl php libapache2-mod-php 
> php-mysql php-gd \
> +&& apt-get clean \
> +&& rm -rf /var/lib/apt/lists/*
> +
> +RUN a2dismod mpm_event \
> +&& a2enmod mpm_prefork
> +
> +RUN curl -o wordpress.tar.gz -fSL "https://wordpress.org/latest.tar.gz; \
> +&& tar -xzf wordpress.tar.gz -C /usr/src/ \
> +&& rm wordpress.tar.gz \
> +&& chown -R www-data:www-data /usr/src/wordpress \
> +&& rm -rf /var/www/html \
> +&& mv /usr/src/wordpress /var/www/html
> +
> +COPY --chown=www-data:www-data ./plugins/ /var/www/html/wp-content/plugins/
> +COPY --chown=www-data:www-data ./themes/ /var/www/html/wp-content/themes/
> +
> +EXPOSE 80
> +CMD apachectl -D FOREGROUND
> diff --git a/Makefile b/Makefile
> new file mode 100644
> index 000..92c0edb
> --- /dev/null
> +++ b/Makefile
> @@ -0,0 +1,30 @@
> +build: lint deps
> + @echo "Fetching plugins and themes."
> + @tox -e fetch
> + @echo "Building the image."
> + @docker build . -t wordpress:latest
> + @echo "Pushing to the prod-is-external registry."
> + @docker tag wordpress:latest 
> prod-is-external.docker-registry.canonical.com/wordpress:latest
> + @docker push 
> prod-is-external.docker-registry.canonical.com/wordpress:latest
> +
> +deps:
> + @echo "Checking dependencies are present"
> + which bzr || sudo apt-get install -y bzr
> + which git || sudo apt-get install -y git

My preference would be to warn on missing packages rather than install, but 
would be interested if others feel the same.

> +
> +lint: clean
> + @echo "Normalising python layout with black."
> + @tox -e black
> + @echo "Running flake8"
> + @tox -e lint
> +
> +clean:
> + @echo "Cleaning files"
> + @rm -rf ./.tox
> + @rm -rf ./.pytest_cache
> + @rm -rf ./plugins/*
> + @rm -rf ./themes/*
> + @mkdir -p plugins
> + @mkdir -p themes
> +
> +.PHONY: build lint clean


-- 
https://code.launchpad.net/~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder/+merge/377499
Your team Wordpress Charmers is requested to review the proposed merge of 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master.

-- 
Mailing list: https://launchpad.net/~wordpress-charmers
Post to : wordpress-charmers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~wordpress-charmers
More help   : https://help.launchpad.net/ListHelp


[Wordpress-charmers] [Merge] ~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into ~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master

2020-01-13 Thread Barry Price
The proposal to merge 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master 
has been updated.

Status: Needs review => Superseded

For more details, see:
https://code.launchpad.net/~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder/+merge/377498
-- 
Your team Wordpress Charmers is requested to review the proposed merge of 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master.

-- 
Mailing list: https://launchpad.net/~wordpress-charmers
Post to : wordpress-charmers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~wordpress-charmers
More help   : https://help.launchpad.net/ListHelp


Re: [Wordpress-charmers] [Merge] ~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into ~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master

2020-01-13 Thread Canonical IS Mergebot
This merge proposal is being monitored by mergebot. Change the status to 
Approved to merge.
-- 
https://code.launchpad.net/~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder/+merge/377499
Your team Wordpress Charmers is requested to review the proposed merge of 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master.

-- 
Mailing list: https://launchpad.net/~wordpress-charmers
Post to : wordpress-charmers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~wordpress-charmers
More help   : https://help.launchpad.net/ListHelp


[Wordpress-charmers] [Merge] ~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into ~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master

2020-01-13 Thread Barry Price
Barry Price has proposed merging 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master.

Commit message:
Create a Docker image to run the latest Wordpress, with our whitelisted plugins 
and themes already included.

Requested reviews:
  Wordpress Charmers (wordpress-charmers)

For more details, see:
https://code.launchpad.net/~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder/+merge/377498
-- 
Your team Wordpress Charmers is requested to review the proposed merge of 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/workpress-k8s-image-builder:master.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000..ac6bb88
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+plugins/
+themes/
+.tox/
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 000..38866f4
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,55 @@
+FROM ubuntu:bionic
+
+RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
+
+RUN apt-get update && apt-get -y dist-upgrade \
+&& apt-get --purge autoremove -y \
+&& apt-get clean \
+&& rm -rf /var/lib/apt/lists/*
+
+ENV APACHE_CONFDIR=/etc/apache2
+ENV APACHE_ENVVARS=/etc/apache2/envvars
+
+RUN apt-get update \
+&& apt-get install -y --no-install-recommends apache2 \
+&& rm -rf /var/lib/apt/lists/* \
+&& sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' "$APACHE_ENVVARS" \
+&& . "$APACHE_ENVVARS" \
+&& for dir in "$APACHE_LOCK_DIR" "$APACHE_RUN_DIR" "$APACHE_LOG_DIR"; do rm -rvf "$dir"; mkdir -p "$dir"; chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; chmod 777 "$dir";  done \
+&& ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log" \
+&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log" \
+&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log" \
+&& chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$APACHE_LOG_DIR"
+
+RUN echo '' > "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '\tSetHandler application/x-httpd-php' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo 'DirectoryIndex disabled' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo 'DirectoryIndex index.php index.html' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '\tOptions -Indexes' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '\tAllowOverride All' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& echo '' >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
+&& a2enconf docker-php
+
+RUN apt-get update && apt-get install -y curl php libapache2-mod-php php-mysql php-gd \
+&& apt-get clean \
+&& rm -rf /var/lib/apt/lists/*
+
+RUN a2dismod mpm_event \
+&& a2enmod mpm_prefork
+
+RUN curl -o wordpress.tar.gz -fSL "https://wordpress.org/latest.tar.gz; \
+&& tar -xzf wordpress.tar.gz -C /usr/src/ \
+&& rm wordpress.tar.gz \
+&& chown -R www-data:www-data /usr/src/wordpress \
+&& rm -rf /var/www/html \
+&& mv /usr/src/wordpress /var/www/html
+
+COPY --chown=www-data:www-data ./plugins/ /var/www/html/wp-content/plugins/
+COPY --chown=www-data:www-data ./themes/ /var/www/html/wp-content/themes/
+
+EXPOSE 80
+CMD apachectl -D FOREGROUND
diff --git a/Makefile b/Makefile
new file mode 100644
index 000..14a5b83
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,27 @@
+build: lint deps
+	@echo "Fetching plugins and themes."
+	@tox -e fetch
+	@echo "Building the image."
+	@docker build . -t wordpress
+
+deps:
+	@echo "Checking dependencies are present"
+	which bzr || sudo apt-get install -y bzr
+	which git || sudo apt-get install -y git
+
+lint: clean
+	@echo "Normalising python layout with black."
+	@tox -e black
+	@echo "Running flake8"
+	@tox -e lint
+
+clean:
+	@echo "Cleaning files"
+	@rm -rf ./.tox
+	@rm -rf ./.pytest_cache
+	@rm -rf ./plugins/*
+	@rm -rf ./themes/*
+	@mkdir -p plugins
+	@mkdir -p themes
+
+.PHONY: build lint clean
diff --git a/fetcher.py b/fetcher.py
new file mode 100755
index 000..2fe005c
--- /dev/null
+++ b/fetcher.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python3
+
+import os
+import shutil
+import subprocess
+import urllib.request
+import zipfile
+
+
+zip_plugins_to_get = {
+# please keep these in alphabetical order
+'404page',
+'all-in-one-event-calendar',
+'coschedule-by-todaymade',
+'elementor',
+'essential-addons-for-elementor-lite',
+'favicon-by-realfavicongenerator',
+'feedwordpress',
+'fruitful-shortcodes',
+'genesis-columns-advanced',
+'line-break-shortcode',
+  

Re: [Wordpress-charmers] [Merge] ~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into ~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master

2020-01-13 Thread Barry Price
Thanks, addressed 2/3, will push a fresh branch and we can discuss the other 
later today.

Diff comments:

> diff --git a/Dockerfile b/Dockerfile
> new file mode 100644
> index 000..38866f4
> --- /dev/null
> +++ b/Dockerfile
> @@ -0,0 +1,55 @@
> +FROM ubuntu:bionic
> +
> +RUN echo 'debconf debconf/frontend select Noninteractive' | 
> debconf-set-selections
> +
> +RUN apt-get update && apt-get -y dist-upgrade \
> +&& apt-get --purge autoremove -y \
> +&& apt-get clean \
> +&& rm -rf /var/lib/apt/lists/*
> +
> +ENV APACHE_CONFDIR=/etc/apache2
> +ENV APACHE_ENVVARS=/etc/apache2/envvars
> +
> +RUN apt-get update \
> +&& apt-get install -y --no-install-recommends apache2 \

This particular case just stops the ssl-cert package from being installed 
(we're not terminating TLS here). I'll add a comment.

> +&& rm -rf /var/lib/apt/lists/* \
> +&& sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' 
> "$APACHE_ENVVARS" \
> +&& . "$APACHE_ENVVARS" \
> +&& for dir in "$APACHE_LOCK_DIR" "$APACHE_RUN_DIR" "$APACHE_LOG_DIR"; do 
> rm -rvf "$dir"; mkdir -p "$dir"; chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" 
> "$dir"; chmod 777 "$dir";  done \
> +&& ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log" \
> +&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log" \
> +&& ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log" \
> +&& chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" 
> "$APACHE_LOG_DIR"
> +
> +RUN echo '' > 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tSetHandler application/x-httpd-php' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo 'DirectoryIndex disabled' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo 'DirectoryIndex index.php index.html' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo >> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tOptions -Indexes' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '\tAllowOverride All' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \
> +&& echo '' >> 
> "$APACHE_CONFDIR/conf-available/docker-php.conf" \

Good idea, thanks. Will do.

> +&& a2enconf docker-php
> +
> +RUN apt-get update && apt-get install -y curl php libapache2-mod-php 
> php-mysql php-gd \
> +&& apt-get clean \
> +&& rm -rf /var/lib/apt/lists/*
> +
> +RUN a2dismod mpm_event \
> +&& a2enmod mpm_prefork
> +
> +RUN curl -o wordpress.tar.gz -fSL "https://wordpress.org/latest.tar.gz; \
> +&& tar -xzf wordpress.tar.gz -C /usr/src/ \
> +&& rm wordpress.tar.gz \
> +&& chown -R www-data:www-data /usr/src/wordpress \
> +&& rm -rf /var/www/html \
> +&& mv /usr/src/wordpress /var/www/html
> +
> +COPY --chown=www-data:www-data ./plugins/ /var/www/html/wp-content/plugins/
> +COPY --chown=www-data:www-data ./themes/ /var/www/html/wp-content/themes/
> +
> +EXPOSE 80
> +CMD apachectl -D FOREGROUND
> diff --git a/Makefile b/Makefile
> new file mode 100644
> index 000..92c0edb
> --- /dev/null
> +++ b/Makefile
> @@ -0,0 +1,30 @@
> +build: lint deps
> + @echo "Fetching plugins and themes."
> + @tox -e fetch
> + @echo "Building the image."
> + @docker build . -t wordpress:latest
> + @echo "Pushing to the prod-is-external registry."
> + @docker tag wordpress:latest 
> prod-is-external.docker-registry.canonical.com/wordpress:latest
> + @docker push 
> prod-is-external.docker-registry.canonical.com/wordpress:latest
> +
> +deps:
> + @echo "Checking dependencies are present"
> + which bzr || sudo apt-get install -y bzr
> + which git || sudo apt-get install -y git

There is precedent in a few charm Makefiles, but we can discuss on a call. 
Leaving in place pending discussion.

> +
> +lint: clean
> + @echo "Normalising python layout with black."
> + @tox -e black
> + @echo "Running flake8"
> + @tox -e lint
> +
> +clean:
> + @echo "Cleaning files"
> + @rm -rf ./.tox
> + @rm -rf ./.pytest_cache
> + @rm -rf ./plugins/*
> + @rm -rf ./themes/*
> + @mkdir -p plugins
> + @mkdir -p themes
> +
> +.PHONY: build lint clean


-- 
https://code.launchpad.net/~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder/+merge/377499
Your team Wordpress Charmers is requested to review the proposed merge of 
~barryprice/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master into 
~wordpress-charmers/charm-k8s-wordpress/+git/wordpress-k8s-image-builder:master.

-- 
Mailing list: https://launchpad.net/~wordpress-charmers
Post to : wordpress-charmers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~wordpress-charmers
More help   : https://help.launchpad.net/ListHelp