github.com/ijc/docker-app@v0.6.1-0.20181012090447-c7ca8bc483fb/examples/wordpress/README.md (about) 1 ## Simple wordpress + mysql app 2 3 ### Visualize app configuration 4 5 ```yaml 6 # docker-app render wordpress 7 version: "3.6" 8 services: 9 mysql: 10 deploy: 11 mode: replicated 12 replicas: 1 13 endpoint_mode: dnsrr 14 environment: 15 MYSQL_DATABASE: wordpressdata 16 MYSQL_PASSWORD: wordpress 17 MYSQL_ROOT_PASSWORD: axx[<^cz3d.fPb 18 MYSQL_USER: wordpress 19 image: mysql:5.6 20 networks: 21 overlay: null 22 volumes: 23 - type: volume 24 source: db_data 25 target: /var/lib/mysql 26 wordpress: 27 depends_on: 28 - mysql 29 deploy: 30 mode: replicated 31 replicas: 1 32 endpoint_mode: vip 33 environment: 34 WORDPRESS_DB_HOST: mysql 35 WORDPRESS_DB_NAME: wordpressdata 36 WORDPRESS_DB_PASSWORD: wordpress 37 WORDPRESS_DB_USER: wordpress 38 WORDPRESS_DEBUG: "true" 39 image: wordpress 40 networks: 41 overlay: null 42 ports: 43 - mode: ingress 44 target: 80 45 published: 8080 46 protocol: tcp 47 networks: 48 overlay: {} 49 volumes: 50 db_data: 51 name: db_data 52 ``` 53 54 **Override default settings with file**. This example sets `debug` to `"false"` and the wordpress service published port to 80 as defined in `prod-settings.yml`. 55 56 ```yaml 57 # docker-app render wordpress --settings-files prod-settings.yml 58 version: "3.6" 59 [...] 60 environment: 61 WORDPRESS_DB_HOST: mysql 62 WORDPRESS_DB_NAME: wordpressdata 63 WORDPRESS_DB_PASSWORD: wordpress 64 WORDPRESS_DB_USER: wordpress 65 WORDPRESS_DEBUG: "false" 66 [...] 67 ports: 68 - mode: ingress 69 target: 80 70 published: 80 71 protocol: tcp 72 [...] 73 ``` 74 75 **Override from the command line**. This example sets `debug` to `"false"` and the database user to a different value. 76 ```yaml 77 # docker-app render wordpress --set debug=\"true\" --set mysql.user.name=mollydock 78 version: "3.6" 79 services: 80 mysql: 81 [...] 82 environment: 83 MYSQL_DATABASE: wordpressdata 84 MYSQL_PASSWORD: wordpress 85 MYSQL_ROOT_PASSWORD: axx[<^cz3d.fPb 86 MYSQL_USER: mollydock 87 [...] 88 wordpress: 89 [...] 90 environment: 91 WORDPRESS_DB_HOST: mysql 92 WORDPRESS_DB_NAME: wordpressdata 93 WORDPRESS_DB_PASSWORD: wordpress 94 WORDPRESS_DB_USER: mollydock 95 WORDPRESS_DEBUG: "true" 96 [...] 97 ``` 98 99 ### View app metadata 100 101 ```yaml 102 # docker-app inspect wordpress 103 wordpress 0.1.0 104 Maintained by: sakuya.izayoi <sizayoi@sdmansion.jp> 105 106 Setting Default 107 ------- ------- 108 debug true 109 mysql.database wordpressdata 110 mysql.image.version 5.6 111 mysql.rootpass axx[<^cz3d.fPb 112 mysql.scale.endpoint_mode dnsrr 113 mysql.scale.mode replicated 114 mysql.scale.replicas 1 115 mysql.user.name wordpress 116 mysql.user.password wordpress 117 volumes.db_data.name db_data 118 wordpress.port 8080 119 wordpress.scale.endpoint_mode vip 120 wordpress.scale.mode replicated 121 wordpress.scale.replicas 1 122 ``` 123 124 ### Generate helm package 125 126 `docker-app helm wordpress` will output a Helm package in the `./wordpress.helm` folder. `--compose-file` (or `-c`), `--set` (or `-e`) and `--settings-files` (or `-f`) flags apply the same way they do for the `render` subcommand. 127 128 ``` 129 $ docker-app helm wordpress --settings-files prod-settings.yml --set mysql.user.name=mollydock 130 $ tree wordpress.chart 131 wordpress.chart 132 ├── Chart.yaml 133 ├── templates 134 │ └── stack.yaml 135 └── values.yaml 136 137 1 directory, 3 files 138 $ cat wordpress.chart/templates/stack.yaml 139 apiversion: v1beta2 140 kind: stacks.compose.docker.com 141 metadata: 142 annotations: {} 143 [...] 144 spec: 145 services: 146 - deploy: 147 [...] 148 ``` 149 150 ### Generate distributable app package 151 152 **Note:** If using Windows, this only works in Linux container mode. 153 154 `docker-app save wordpress` creates a Docker image packaging the relevant configuration files: 155 156 ``` 157 $ docker-app save wordpress 158 $ docker-app ls 159 REPOSITORY TAG IMAGE ID CREATED SIZE 160 wordpress.dockerapp latest 61f8cafb7762 4 minutes ago 1.2kB 161 ``` 162 163 The image can be pushed to the hub: 164 ``` 165 $ docker push --namespace <username> wordpress 166 The push refers to repository [docker.io/<username>/wordpress.dockerapp] 167 61f8cafb7762: Pushed 168 latest: digest: sha256:91b9b526ac1e645e9c89663ff1453c2d7f68535e2dbbca6d4466d365e15ee155 size: 525 169 ``` 170 171 One can now deploy the application using `docker-app deploy`: 172 173 ``` 174 $ docker-app deploy <username>/wordpress 175 Creating network wordpress_overlay 176 Creating service wordpress_mysql 177 Creating service wordpress_wordpress 178 ```