It ynstellen fan automatyske ûntfangst fan letsencrypt-sertifikaten mei docker op linux

Ik koartlyn feroare de firtuele tsjinner, en moast konfigurearje alles wer. Ik leaver dat de side tagonklik is fia https en letsencrypt-sertifikaten wurde automatysk krigen en fernijd. Dit kin berikt wurde troch twa docker-ôfbyldings nginx-proxy en nginx-proxy-companion te brûken.

Dit is in hantlieding oer hoe't jo in webside op Docker kinne ynstelle, mei in proxy dy't automatysk SSL-sertifikaten ûntfangt. De CentOS 7 firtuele tsjinner wurdt brûkt.

Ik nim oan dat de tsjinner is al oankocht, konfigurearre, oanmeld mei in kaai, fail2ban ynstallearre, ensfh.

Earst moatte jo docker ynstallearje.

  1. Earst moatte jo ôfhinklikens ynstallearje
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. Ferbine repository
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. Ynstallearje dan docker community edysje
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. Foegje docker ta oan opstarten en útfiere
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. Foegje in brûker ta oan de docker-groep om docker sûnder sudo út te fieren
    $ usermod -aG docker user

De folgjende stap is om docker-compose te ynstallearjen. It hulpprogramma kin op ferskate manieren ynstalleare wurde, mar ik leaver te ynstallearjen fia de pip-manager en virtualenv, om it systeem net te rommeljen mei ûnnedige pakketten.

  1. Ynstallearje pip
    $ sudo yum install python-pip
  2. Ynstallearje virtualenv
    $ pip install virtualenv
  3. Folgjende moatte jo in map meitsje mei it projekt en it inisjalisearje. De map mei alles wat jo nedich binne om pakketten te behearjen sil ve wurde neamd.
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. Om de firtuele omjouwing te brûken, moatte jo it folgjende kommando útfiere yn 'e projektmap.
    $ source ve/bin/activate
  5. Jo kinne docker-compose ynstallearje.
    pip install docker-compose

    Om de konteners inoar te sjen, meitsje wy in netwurk. Standert wurdt de brêgebestjoerder brûkt.

    $ docker network create network

    Folgjende moatte jo docker-compose konfigurearje, de proxy sil yn 'e proxy-map wêze, de testside sil yn' e testmap wêze. Bygelyks, ik brûk de domeinnamme example.com

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

    Ynhâld 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:

    Miljeu fariabele NGINX_PROXY_CONTAINER it is nedich foar de letsencrypt-kontener om de proxy-kontener te sjen. De mappen /etc/nginx/certs /etc/nginx/vhost.d en /usr/share/nginx/html moatte wurde dield troch beide konteners. Foar de letsencrypt-kontener om goed te wurkjen, moat de applikaasje tagonklik wêze op sawol poarte 80 as 443.

    Ynhâld 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]

    Hjir binne omjouwingsfariabelen nedich sadat de proxy it fersyk nei de tsjinner goed ferwurket en in sertifikaat freget foar de juste domeinnamme.

    Alles wat oerbliuwt is docker-compose út te fieren

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

Boarne: www.habr.com

Add a comment