ื”ื’ื“ืจืช ืงื‘ืœื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืื™ืฉื•ืจื™ letsencrypt ื‘ืืžืฆืขื•ืช docker ื‘-linux

ืœืื—ืจื•ื ื” ืฉื™ื ื™ืชื™ ืืช ื”ืฉืจืช ื”ื•ื•ื™ืจื˜ื•ืืœื™, ื•ื ืืœืฆืชื™ ืœื”ื’ื“ื™ืจ ื”ื›ืœ ืฉื•ื‘. ืื ื™ ืžืขื“ื™ืฃ ืฉื”ืืชืจ ื™ื”ื™ื” ื ื’ื™ืฉ ื“ืจืš https ื•ืืคืฉืจ ืœืงื‘ืœ ืื™ืฉื•ืจื™ื ืœ-sencrypt ื•ืœื—ื“ืฉ ืื•ืชื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ื ื™ืชืŸ ืœื”ืฉื™ื’ ื–ืืช ืขืœ ื™ื“ื™ ืฉื™ืžื•ืฉ ื‘ืฉืชื™ ืชืžื•ื ื•ืช docker nginx-proxy ื•-nginx-proxy-companion.

ื–ื”ื• ืžื“ืจื™ืš ื›ื™ืฆื“ ืœื”ื’ื“ื™ืจ ืืชืจ ื‘-Docker, ืขื ืคืจื•ืงืกื™ ืฉืžืงื‘ืœ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืชืขื•ื“ื•ืช SSL. ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืฉืจืช ื”ื•ื™ืจื˜ื•ืืœื™ CentOS 7.

ืื ื™ ืžื ื™ื— ืฉื”ืฉืจืช ื›ื‘ืจ ื ืจื›ืฉ, ื”ื•ื’ื“ืจ, ื ื›ื ืก ื‘ืืžืฆืขื•ืช ืžืคืชื—, fail2ban ื”ื•ืชืงืŸ ื•ื›ื•'.

ืจืืฉื™ืช ืขืœื™ืš ืœื”ืชืงื™ืŸ docker.

  1. ืจืืฉื™ืช ืขืœื™ืš ืœื”ืชืงื™ืŸ ืชืœื•ืช
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. ื—ื‘ืจ ืžืื’ืจ
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. ืœืื—ืจ ืžื›ืŸ ื”ืชืงืŸ ืืช ืžื”ื“ื•ืจืช ื”ืงื”ื™ืœื” ืฉืœ Docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. ื”ื•ืกืฃ docker ืœื”ืคืขืœื” ื•ื”ืจืฆื”
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. ื”ื•ืกืฃ ืžืฉืชืžืฉ ืœืงื‘ื•ืฆืช docker ื›ื“ื™ ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื”ืคืขื™ืœ ืืช docker ืœืœื sudo
    $ usermod -aG docker user

ื”ืฉืœื‘ ื”ื‘ื ื”ื•ื ื”ืชืงื ืช docker-compose. ื ื™ืชืŸ ืœื”ืชืงื™ืŸ ืืช ื›ืœื™ ื”ืฉื™ืจื•ืช ื‘ื›ืžื” ื“ืจื›ื™ื, ืื‘ืœ ืื ื™ ืžืขื“ื™ืฃ ืœื”ืชืงื™ืŸ ื“ืจืš ื”-pip manager ื•-virtualenv, ื›ื“ื™ ืœื ืœื”ืขืžื™ืก ืขืœ ื”ืžืขืจื›ืช ื‘ื—ื‘ื™ืœื•ืช ืžื™ื•ืชืจื•ืช.

  1. ื”ืชืงืŸ pip
    $ sudo yum install python-pip
  2. ื”ืชืงืŸ ืืช virtualenv
    $ pip install virtualenv
  3. ืœืื—ืจ ืžื›ืŸ ืขืœื™ืš ืœื™ืฆื•ืจ ืชื™ืงื™ื” ืขื ื”ืคืจื•ื™ืงื˜ ื•ืœืืชื—ืœ ืื•ืชื”. ื”ืชื™ืงื™ื” ืขื ื›ืœ ืžื” ืฉืืชื” ืฆืจื™ืš ื›ื“ื™ ืœื ื”ืœ ื—ื‘ื™ืœื•ืช ืชื™ืงืจื ve.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. ื›ื“ื™ ืœื”ืชื—ื™ืœ ืœื”ืฉืชืžืฉ ื‘ืกื‘ื™ื‘ื” ื”ื•ื™ืจื˜ื•ืืœื™ืช, ืขืœื™ืš ืœื”ืคืขื™ืœ ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ื‘ืชื™ืงื™ื™ืช ื”ืคืจื•ื™ืงื˜.
    $ source ve/bin/activate
  5. ืืชื” ื™ื›ื•ืœ ืœื”ืชืงื™ืŸ docker-compose.
    pip install docker-compose

    ื›ื“ื™ ืฉื”ืงื•ื ื˜ื™ื™ื ืจื™ื ื™ืจืื• ืื—ื“ ืืช ื”ืฉื ื™, ื ื™ืฆื•ืจ ืจืฉืช. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืžื ื”ืœ ื”ื”ืชืงืŸ ืฉืœ ื”ื’ืฉืจ.

    $ docker network create network

    ืœืื—ืจ ืžื›ืŸ ืขืœื™ืš ืœื”ื’ื“ื™ืจ docker-compose, ื”-proxy ื™ื”ื™ื” ื‘ืชื™ืงื™ื™ืช ื”-proxy, ืืชืจ ื”ื‘ื“ื™ืงื” ื™ื”ื™ื” ื‘ืชื™ืงื™ื™ืช ื”ื‘ื“ื™ืงื”. ืœื“ื•ื’ืžื”, ืื ื™ ืžืฉืชืžืฉ ื‘ืฉื ื”ืชื—ื•ื example.com

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    ืชื•ึนื›ึถืŸ proxy/docer-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
      nginx-proxy:
        container_name: nginx-proxy
        image: jwilder/nginx-proxy
        ports:
          - 80:80
          - 443:443
        volumes:
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/tmp/docker.sock:ro
    
      nginx-proxy-letsencrypt:
        container_name: nginx-proxy-letsencrypt
        image: jrcs/letsencrypt-nginx-proxy-companion
        volumes: 
          - certs:/etc/nginx/certs
          - vhost.d:/etc/nginx/vhost.d
          - html:/usr/share/nginx/html
          - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
          - NGINX_PROXY_CONTAINER=nginx-proxy
    
    volumes:
      certs:
      vhost.d:
      html:

    ืžืฉืชื ื” ื”ืกื‘ื™ื‘ื” NGINX_PROXY_CONTAINER ื”ื›ืจื—ื™ ืฉื”ืžื™ื›ืœ ืฉืœ letsencrypt ื™ืจืื” ืืช ืžื™ื›ืœ ื”-proxy. ื”ืชื™ืงื™ื•ืช /etc/nginx/certs /etc/nginx/vhost.d ื•- /usr/share/nginx/html ื—ื™ื™ื‘ื•ืช ืœื”ื™ื•ืช ืžืฉื•ืชืคื•ืช ืขืœ ื™ื“ื™ ืฉื ื™ ื”ืžื›ื™ืœื™ื. ื›ื“ื™ ืฉื”ืžื™ื›ืœ ืฉืœ letsencrypt ื™ืคืขืœ ื›ื”ืœื›ื”, ื”ืืคืœื™ืงืฆื™ื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื ื’ื™ืฉื” ื’ื ื‘ื™ืฆื™ืื” 80 ื•ื’ื ื‘-443.

    ืชื•ึนื›ึถืŸ test/docer-compose.yml

    version: '3'
    
    networks:
      default:
        external:
          name: network
    
    services:
    
      nginx:
        container_name: nginx
        image: nginx:latest
        environment:
          - VIRTUAL_HOST=example.com
          - LETSENCRYPT_HOST=example.com
          - [email protected]

    ื›ืืŸ, ื™ืฉ ืฆื•ืจืš ื‘ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื›ื“ื™ ืฉื”ืคืจื•ืงืกื™ ื™ืขื‘ื“ ื ื›ื•ืŸ ืืช ื”ื‘ืงืฉื” ืœืฉืจืช ื•ื™ื‘ืงืฉ ืื™ืฉื•ืจ ืœืฉื ื”ืชื—ื•ื ื”ื ื›ื•ืŸ.

    ื›ืœ ืžื” ืฉื ื•ืชืจ ื”ื•ื ืœื”ืคืขื™ืœ docker-compose

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”