Linux рдкрд░ docker рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Letencrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░реЛрдВ рдХреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░рд╕реАрдж рд╕реЗрдЯ рдХрд░рдирд╛

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдмрджрд▓рд╛ рд╣реИ, рдФрд░ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рд╛рдЗрдЯ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рд╣реЛ рдФрд░ Letencrypt рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдФрд░ рдирд╡реАрдиреАрдХреГрдд рд╣реЛ рдЬрд╛рдПрдВред рдЗрд╕реЗ рджреЛ рдбреЙрдХрд░ рдЫрд╡рд┐рдпреЛрдВ nginx-proxy рдФрд░ nginx-proxy-companion рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рдПрдХ рдЧрд╛рдЗрдб рд╣реИ рдХрд┐ рдбреЙрдХрд░ рдкрд░ рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рдП, рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рд╕рд╛рде рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрд╕рдПрд╕рдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреА рд╣реИред CentOS 7 рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд╣рд▓реЗ рд╣реА рдЦрд░реАрджрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдлрд╝реЗрд▓2рдмреИрди рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЖрджрд┐ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдбреЙрдХрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

  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. рдлрд┐рд░ рдбреЙрдХрд░ рд╕рдореБрджрд╛рдп рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдореЗрдВ рдбреЙрдХрд░ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдВ
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. sudo рдХреЗ рдмрд┐рдирд╛ docker рдЪрд▓рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП docker рд╕рдореВрд╣ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЬреЛрдбрд╝реЗрдВ
    $ usermod -aG docker user

рдЕрдЧрд▓рд╛ рдЪрд░рдг рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдкрд┐рдк рдкреНрд░рдмрдВрдзрдХ рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ, рддрд╛рдХрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

  1. рдкрд┐рдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
    $ sudo yum install python-pip
  2. рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
    $ pip install virtualenv
  3. рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬреЛ рдХреБрдЫ рднреА рдЪрд╛рд╣рд┐рдП, рдЙрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ ve рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    $ source ve/bin/activate
  5. рдЖрдк рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
    pip install docker-compose

    рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдмрдирд╛рдПрдВрдЧреЗред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдмреНрд░рд┐рдЬ рдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    $ docker network create network

    рдЖрдЧреЗ рдЖрдкрдХреЛ рдбреЙрдХрд░-рдХрдВрдкреЛрдЬрд╝ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЙрдХреНрд╕реА рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдЧреА, рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯ рдкрд░реАрдХреНрд╖рдг рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛрдЧреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдбреЛрдореЗрди рдирд╛рдо example.com рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ

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

    рдЕрдВрддрд░реНрд╡рд╕реНрддреБ рдкреНрд░реЙрдХреНрд╕реА/docker-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 Letencrypt рдХрдВрдЯреЗрдирд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЙрдХреНрд╕реА рдХрдВрдЯреЗрдирд░ рдХреЛ рджреЗрдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред /etc/nginx/certs /etc/nginx/vhost.d рдФрд░ /usr/share/nginx/html рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рджреЛрдиреЛрдВ рдХрдВрдЯреЗрдирд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред Letencrypt рдХрдВрдЯреЗрдирд░ рдХреЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдкреЛрд░реНрдЯ 80 рдФрд░ 443 рджреЛрдиреЛрдВ рдкрд░ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

    рдЕрдВрддрд░реНрд╡рд╕реНрддреБ test/docker-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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ