From d14e5885be76b35a0835009a28d6053a52582f91 Mon Sep 17 00:00:00 2001 From: Luke Murphy Date: Fri, 15 May 2020 20:26:04 +0200 Subject: [PATCH] Running sprint at CNABing wordpress --- .drone.yml | 22 ------ README.md | 9 --- docker-compose.override.yml | 19 ------ docker-compose.prod.yml | 67 +++++++++++++++++++ docker-compose.yml | 14 +++- params.yml | 3 + .../docker-compose.yml | 14 ++-- wordpress.dockerapp/metadata.yml | 9 +++ wordpress.dockerapp/parameters.yml | 3 + 9 files changed, 103 insertions(+), 57 deletions(-) delete mode 100644 .drone.yml delete mode 100644 docker-compose.override.yml create mode 100644 docker-compose.prod.yml create mode 100644 params.yml rename docker-compose.production.yml => wordpress.dockerapp/docker-compose.yml (74%) create mode 100644 wordpress.dockerapp/metadata.yml create mode 100644 wordpress.dockerapp/parameters.yml diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 4e321fa..0000000 --- a/.drone.yml +++ /dev/null @@ -1,22 +0,0 @@ ---- -kind: pipeline -name: deploy to swarm.autonomic.zone -steps: - - name: deployment - image: decentral1se/drone-stack:19.03.8-override-compose - settings: - compose: docker-compose.yml - host: tcp://swarm.autonomic.zone:2376 - override_compose: docker-compose.production.yml - stack_name: wordpress - tlsverify: true - environment: - PLUGIN_CACERT: - from_secret: docker_cacert - PLUGIN_CERT: - from_secret: docker_cert - PLUGIN_KEY: - from_secret: docker_key -trigger: - branch: - - master diff --git a/README.md b/README.md index 9a12fd8..10cd8f5 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,7 @@ # wordpress -[![Build Status](https://drone.autonomic.zone/api/badges/autonomic-cooperative/wordpress/status.svg)](https://drone.autonomic.zone/autonomic-cooperative/wordpress) - > https://wordpress.org -> https://wp.swarm.autonomic.zone - ## Development ```bash @@ -25,8 +21,3 @@ of something like [wait-for-it](https://github.com/vishnubob/wait-for-it) because the `depends_on` stanza makes Docker swarm wait for it to come up on the production deploy. So, we can just avoid doing this altogether for the development workflow to save ourselves work. - -## Production - -1. Our [drone.autonomic.zone](https://drone.autonomic.zone/autonomic-cooperative/wordpress/) configuration automatically deploys. -1. For a manual deploy guide, see [this documentation](https://git.autonomic.zone/autonomic-cooperative/organising/wiki/working-with-docker-swarm). diff --git a/docker-compose.override.yml b/docker-compose.override.yml deleted file mode 100644 index 1df0017..0000000 --- a/docker-compose.override.yml +++ /dev/null @@ -1,19 +0,0 @@ ---- -version: "3.7" - -services: - wordpress: - ports: - - "8010:80" - environment: - - WORDPRESS_DB_HOST=mariadb - - WORDPRESS_DB_USER=wordpress - - WORDPRESS_DB_PASSWORD=wordpress - - WORDPRESS_DB_NAME=wordpress - - mariadb: - environment: - - MYSQL_ROOT_PASSWORD=somewordpress - - MYSQL_DATABASE=wordpress - - MYSQL_USER=wordpress - - MYSQL_PASSWORD=wordpress diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..5e1d4ac --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,67 @@ +--- +version: "3.7" + +services: + wordpress: + image: wordpress:5.4.1 + ports: + - 3050:80 + volumes: + - wp:/var/www/html + networks: + - backend + - proxy + environment: + - WORDPRESS_DB_HOST=mariadb + - WORDPRESS_DB_USER=wordpress + - WORDPRESS_DB_PASSWORD_FILE=/run/secrets/wp-db-passwd-v1 + - WORDPRESS_DB_NAME=wordpress + secrets: + - wp-db-passwd-v1 + deploy: + mode: replicated + replicas: 1 + update_config: + failure_action: rollback + placement: + constraints: + - node.role == manager + labels: + traefik.enable: "true" + traefik.http.services.wordpress.loadbalancer.server.port: "80" + traefik.http.routers.wordpress.rule: "Host(`wp.swarm.autonomic.zone`)" + traefik.http.routers.wordpress.entrypoints: "web-secure" + traefik.http.routers.wordpress.tls.certresolver: "staging" + + mariadb: + image: mariadb:10.5 + volumes: + - db:/var/lib/mysql + networks: + - backend + environment: + - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root-passwd-v1 + - MYSQL_DATABASE=wordpress + - MYSQL_USER=wordpress + - MYSQL_PASSWORD_FILE=/run/secrets/mysql-user-passwd-v1 + secrets: + - mysql-root-passwd-v1 + - mysql-user-passwd-v1 + +networks: + backend: + driver: overlay + proxy: + external: true + +volumes: + db: + wp: + +secrets: + wp-db-passwd-v1: + external: true + mysql-root-passwd-v1: + external: true + mysql-user-passwd-v1: + external: true diff --git a/docker-compose.yml b/docker-compose.yml index 12281e1..4df3963 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,11 +1,23 @@ --- -version: "3.7" +version: 3.7 services: wordpress: image: wordpress:5.4.1 + ports: + - 8010:80 depends_on: - mariadb + environment: + WORDPRESS_DB_HOST: mariadb + WORDPRESS_DB_USER: wordpress + WORDPRESS_DB_PASSWORD: wordpress + WORDPRESS_DB_NAME: wordpress mariadb: image: mariadb:10.5 + environment: + MYSQL_ROOT_PASSWORD: somewordpress + MYSQL_DATABASE: wordpress + MYSQL_USER: wordpress + MYSQL_PASSWORD: wordpress diff --git a/params.yml b/params.yml new file mode 100644 index 0000000..cc25d82 --- /dev/null +++ b/params.yml @@ -0,0 +1,3 @@ +wordpress: + port: 8000 + domain: foobar.com diff --git a/docker-compose.production.yml b/wordpress.dockerapp/docker-compose.yml similarity index 74% rename from docker-compose.production.yml rename to wordpress.dockerapp/docker-compose.yml index d611be3..f26383c 100644 --- a/docker-compose.production.yml +++ b/wordpress.dockerapp/docker-compose.yml @@ -3,8 +3,9 @@ version: "3.7" services: wordpress: + image: "wordpress:5.4.1" ports: - - "3050:80" + - "${wordpress.port}:80" volumes: - "wp:/var/www/html" networks: @@ -26,13 +27,14 @@ services: constraints: - node.role == manager labels: - - "traefik.enable=true" - - "traefik.http.services.wordpress.loadbalancer.server.port=80" - - "traefik.http.routers.wordpress.rule=Host(`wp.swarm.autonomic.zone`)" - - "traefik.http.routers.wordpress.entrypoints=web-secure" - - "traefik.http.routers.wordpress.tls.certresolver=staging" + traefik.enable: "true" + traefik.http.services.wordpress.loadbalancer.server.port: "80" + traefik.http.routers.wordpress.rule: "Host(`${wordpress.domain}`)" + traefik.http.routers.wordpress.entrypoints: "web-secure" + traefik.http.routers.wordpress.tls.certresolver: "staging" mariadb: + image: "mariadb:10.5" volumes: - "db:/var/lib/mysql" networks: diff --git a/wordpress.dockerapp/metadata.yml b/wordpress.dockerapp/metadata.yml new file mode 100644 index 0000000..db41a14 --- /dev/null +++ b/wordpress.dockerapp/metadata.yml @@ -0,0 +1,9 @@ +--- +version: 0.1.0 +name: wordpress +description: | + WordPress is open source software you can use to create a beautiful website, + blog, or app. +maintainers: + - name: decentral1se + email: lukewm@riseup.net diff --git a/wordpress.dockerapp/parameters.yml b/wordpress.dockerapp/parameters.yml new file mode 100644 index 0000000..864a90d --- /dev/null +++ b/wordpress.dockerapp/parameters.yml @@ -0,0 +1,3 @@ +wordpress: + port: 3050 + domain: example.com