How to Setup Nginx | Docker Swarm

Docker Apr 10, 2022

Simple and easy way do setup and deploy nginx webserver using docker swarm.

mkdir -p nginx/{nginx-conf,ssl} && cd nginx
nano docker-compose.yml
version: '3.7'

services:
  prod:
    image: nginx:stable-alpine
    volumes:
      - ./nginx-conf:/etc/nginx/conf.d # place for nginx *.conf files
      - ./ssl:/etc/nginx/ssl # place for ssl certs
      - /webapps:/webapps  # this is where I like to keep my webapps
    networks:
      - durbok-net
    deploy:
      placement:
        constraints:
          - node.role == manager
      replicas: 1
      restart_policy:
        condition: on-failure
    ports:
      - 80:80
      - 443:443

networks:
  durbok-net:
    external: true

volumes:
  nginx-conf:
docker stack deploy -c docker-compose.yml nginx

When adding some nginx *.conf files you can test the configuration file and reload nginx service with:

# Test
docker exec -it nginx_prod.1.yzg8p2shj10c1ai06b1f1dyam nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

# Reload
docker exec -it nginx_prod.1.yzg8p2shj10c1ai06b1f1dyam nginx -s reload

That's it. Done.

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.