diff --git a/Dockerfile b/Dockerfile index 2cfc707..ad30141 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,6 +18,11 @@ RUN apt-get update && apt-get install -y libmemcached-dev \ && pecl install memcached \ && docker-php-ext-enable memcached +# install nfs support for WordPress uploads directory +# using --no-install-recommends to prevent python install +RUN apt-get install -y --no-install-recommends \ + nfs-common + # set recommended PHP.ini settings # see https://secure.php.net/manual/en/opcache.installation.php RUN { \ diff --git a/common-compose.yml b/common-compose.yml index debdb28..f2beab0 100644 --- a/common-compose.yml +++ b/common-compose.yml @@ -1,9 +1,24 @@ wordpress: build: . + privileged: true env_file: _env environment: - CONTAINERBUDDY=file:///opt/containerbuddy/config.json +nfs: + image: autopilot-nfs + privileged: true + mem_limit: 256m + restart: always + labels: + - triton.cns.services=nfs + expose: + - 111 + - 1892 + - 2049 + environment: + - CONSUL=consul + # MySQL designed for container-native deployment on Joyent's Triton platform. mysql: diff --git a/containerbuddy/config.json b/containerbuddy/config.json index e3e34c2..cab4c5e 100644 --- a/containerbuddy/config.json +++ b/containerbuddy/config.json @@ -17,6 +17,11 @@ "poll": 5, "onChange": "/opt/containerbuddy/onchange_reload-db.sh" }, + { + "name": "nfs", + "poll": 5, + "onChange": "/opt/containerbuddy/onchange_reload-nfs.sh" + }, { "name": "memcached", "poll": 5, diff --git a/containerbuddy/onchange_reload-nfs.sh b/containerbuddy/onchange_reload-nfs.sh new file mode 100755 index 0000000..0864f0f --- /dev/null +++ b/containerbuddy/onchange_reload-nfs.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [[ `curl -s ${CONSUL}:8500/v1/health/state/passing | grep nfs` ]] +then + echo "nfs is healthy, mounting uploads directory...." + mount -t nfs -v -o nolock,vers=3 nfs:/exports /var/www/html/content/uploads +else + echo "nfs is not healthly, umounting uploads directory..." + umount -f -l /var/www/html/content/uploads +fi diff --git a/containerbuddy/onstart.sh b/containerbuddy/onstart.sh index 47bdc25..733c1e6 100755 --- a/containerbuddy/onstart.sh +++ b/containerbuddy/onstart.sh @@ -15,7 +15,13 @@ do sleep 5 done -echo "mysql-primary is now health, moving on..." +until [[ `curl -s ${CONSUL}:8500/v1/health/state/passing | grep nfs` ]] +do + echo "no healthly nfs server avaliable yet...." + sleep 5 +done + +echo "mysql-primary and nfs are now healthly, moving on..." /opt/containerbuddy/onchange_reload-db.sh /opt/containerbuddy/onchange_reload-memcached.sh diff --git a/containerbuddy/wp-config.sh b/containerbuddy/wp-config.sh index d2841e3..6e38e58 100755 --- a/containerbuddy/wp-config.sh +++ b/containerbuddy/wp-config.sh @@ -4,4 +4,4 @@ consul-template \ -once \ -dedup \ -consul ${CONSUL}:8500 \ - -template "/var/www/html/wp-config.php.ctmpl:/var/www/html/wp-config.php" + -template "/var/www/html/consul-templates/wp-config.php.ctmpl:/var/www/html/wp-config.php" diff --git a/local-compose.yml b/local-compose.yml index 0312194..fe4c08c 100644 --- a/local-compose.yml +++ b/local-compose.yml @@ -4,11 +4,25 @@ wordpress: service: wordpress links: - consul:consul + - nfs:nfs mem_limit: 512m restart: never ports: - "80" +nfs: + extends: + file: common-compose.yml + service: nfs + environment: + - CONSUL=consul + - CONTAINERBUDDY=file:///etc/containerbuddy.json + links: + - consul:consul + ports: + - "111" + - "1892:1892" + - "2049" mysql: extends: