แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แžถแžšแž‘แž‘แžฝแž›แžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแž“แŸƒแžœแžทแž‰แŸ’แž‰แžถแž”แž“แž”แžแŸ’แžš letsencrypt แžŠแŸ„แž™แž”แŸ’แžšแžพ docker แž“แŸ…แž›แžพแž›แžธแž“แžปแž…

แžแŸ’แž˜แžธแŸ—แž“แŸแŸ‡แžแŸ’แž‰แžปแŸ†แž”แžถแž“แž•แŸ’แž›แžถแžŸแŸ‹แž”แŸ’แžแžผแžšแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แŸแž“แžทแž˜แŸ’แž˜แžทแž แž แžพแž™แžแŸ’แžšแžผแžœแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แžขแŸ’แžœแžธแŸ—แž‚แŸ’แžšแž”แŸ‹แž™แŸ‰แžถแž„แž˜แŸ’แžแž„แž‘แŸ€แžแŸ” แžแŸ’แž‰แžปแŸ†แž…แžผแž›แž…แžทแžแŸ’แžแžฑแŸ’แž™แž‚แŸแž แž‘แŸ†แž–แŸแžšแžขแžถแž…แž…แžผแž›แž”แŸ’แžšแžพแž”แžถแž“แžแžถแž˜แžšแž™แŸˆ https แž แžพแž™แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžœแžทแž‰แŸ’แž‰แžถแž”แž“แž”แžแŸ’แžšแž‚แŸ’แžšแžธแž”แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แž‘แžฝแž› แž“แžทแž„แž”แž“แŸ’แžแžŠแŸ„แž™แžŸแŸ’แžœแŸแž™แž”แŸ’แžšแžœแžแŸ’แžแžทแŸ” แž“แŸแŸ‡แžขแžถแž…แžŸแž˜แŸ’แžšแŸแž…แž”แžถแž“แžŠแŸ„แž™แž”แŸ’แžšแžพแžšแžผแž”แž—แžถแž– 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 community edition
    $ 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 แž“แžทแž„ 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 แž”แŸ’แžšแžผแž€แžŸแŸŠแžธแž“แžนแž„แžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แž“แžปแž„แžแžแž”แŸ’แžšแžผแž€แžŸแŸŠแžธ แž‚แŸแž แž‘แŸ†แž–แŸแžšแžŸแžถแž€แž›แŸ’แž”แž„แž“แžนแž„แžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แž“แžปแž„แžแžแžŸแžถแž€แž›แŸ’แž”แž„แŸ” แžงแž‘แžถแž แžšแžŽแŸ แžแŸ’แž‰แžปแŸ†แž€แŸ†แž–แžปแž„แž”แŸ’แžšแžพแžˆแŸ’แž˜แŸ„แŸ‡แžŠแŸ‚แž“ example.com

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

    แž˜แžถแžแžทแž€แžถ proxy/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 แžœแžถแž…แžถแŸ†แž”แžถแž…แŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž€แžปแž„แžแžบแž“แŸแžš letsencrypt แžŠแžพแž˜แŸ’แž”แžธแž˜แžพแž›แž’แžปแž„แž”แŸ’แžšแžผแž€แžŸแŸŠแžธแŸ” แžแž /etc/nginx/certs /etc/nginx/vhost.d แž“แžทแž„ /usr/share/nginx/html แžแŸ’แžšแžผแžœแžแŸ‚แž…แŸ‚แž€แžšแŸ†แž›แŸ‚แž€แžŠแŸ„แž™แž’แžปแž„แž‘แžถแŸ†แž„แž–แžธแžšแŸ” แžŠแžพแž˜แŸ’แž”แžธแžฑแŸ’แž™แž€แžปแž„แžแžบแž“แŸแžš letsencrypt แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž”แžถแž“แžแŸ’แžšแžนแž˜แžแŸ’แžšแžผแžœ แž€แž˜แŸ’แž˜แžœแžทแž’แžธแžแŸ’แžšแžผแžœแžแŸ‚แžขแžถแž…แž…แžผแž›แž”แŸ’แžšแžพแž”แžถแž“แž‘แžถแŸ†แž„แž“แŸ…แž›แžพแž…แŸ’แžšแž€ 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

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹