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  ```