= Deploy 

== Create Yaml file

.docker-compose 
[source,yaml]
----
services:
  myapp: //<1>
    image: node:8.2.1-alpine //<2>
    hostname: myapp 
    volumes:
      - /PATH_to_app/app.js:/code/app.js //<3>
      - /PATH_to_app/index.html:/code/index.html //<3>
    ports:
      - "8000:8000" //<4>
    networks:
      - mynet //<5>
    deploy:
      restart_policy:
        delay: 10s
        max_attempts: 10
        window: 60s
      placement:
        constraints:
          - node.labels.myapp==true //<6>

  mybrowser:
    image: nginx:1.17.9-alpine
    deploy:
      mode: replicated
      restart_policy:
        delay: 10s
        max_attempts: 10
        window: 60s
      replicas: 2
      placement:
        max_replicas_per_node: 1
        constraints:
          - node.labels.group==myapp //<14>
    ports:
      - "8080:80"
      - "9443:443"
    volumes: //<15>
      - /PATH_to_FILE/my.conf:/DIR_in_container/my.conf //<16>
      #- /PATH_to_FILE/public.crt:/etc/nginx/public.crt //<17>
      #- /PATH_to_FILE/private.key:/etc/nginx/private.key //<17>
    networks:
      - myapp //<5>


networks:
  myapp: //<5>
    driver: overlay

                                               
----
<1> Service name
<2> Image name
<3> Volume (bind) to Use
<4> Expose port
<5> Network to Use
<6> Node Placement 
<7> Start server
<10> *NEW* Service name
<11> *NEW* Volume
<12> *NEW* Port
<13> *NEW* Label
<14> Node Placement (Proxy)
<15> Bind mount config files
<16> Nginx config file
<17> ssl keys
                                                              


