version: "2" services: nginx: restart: always image: nginx container_name: nginx ports: - "80:80" - "443:443" volumes: - "/etc/nginx/conf.d" - "/etc/nginx/vhost.d" - "/usr/share/nginx/html" - "./volumes/proxy/certs:/etc/nginx/certs:ro" nginx-gen: restart: always image: jwilder/docker-gen container_name: nginx-gen volumes: - "/var/run/docker.sock:/tmp/docker.sock:ro" - "./volumes/proxy/templates/nginx.tmpl:/etc/docker-gen/templates/nginx.tmpl:ro" volumes_from: - nginx entrypoint: /usr/local/bin/docker-gen -notify-sighup nginx -watch -wait 5s:30s /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf letsencrypt-nginx-proxy-companion: restart: always image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt-nginx-proxy-companion volumes_from: - nginx volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - "./volumes/proxy/certs:/etc/nginx/certs:rw" environment: - NGINX_DOCKER_GEN_CONTAINER=nginx-gen sample-api: restart: always image: sample-api build: ./sample-containers/api container_name: sample-api environment: - VIRTUAL_HOST=sampleapi.example.com - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=3000 - LETSENCRYPT_HOST=sampleapi.example.com - LETSENCRYPT_EMAIL=email@example.com sample-website: restart: always image: sample-website build: ./sample-containers/website container_name: sample-website volumes: - "./volumes/nginx-sample-website/conf.d/:/etc/nginx/conf.d" - "./volumes/config/sample-website/config.js:/usr/share/nginx/html/config.js" environment: - VIRTUAL_HOST=samplewebsite.example.com - VIRTUAL_NETWORK=nginx-proxy - VIRTUAL_PORT=80 - LETSENCRYPT_HOST=sample.example.com - LETSENCRYPT_EMAIL=email@example.com