Para disa kohësh, kam ndërruar serverin virtual dhe duhej ta konfiguronte gjithçka përsëri. Preferoj që faqja të jetë e aksesueshme përmes https dhe certifikatat letsencrypt të merren dhe të rinovohen automatikisht. Kjo mund të arrihet duke përdorur dy imazhe docker nginx-proxy dhe nginx-proxy-companion.
Ky udhëzues tregon si të konfiguroni faqen në docker, me një proxy që merr automatikisht Certifikatat SSL. Përdoret server virtuel CentOS 7.
Supozoj se serveri është blerë, i konfiguruar, dhe hyrja bëhet me çelës, dhe është instaluar fail2ban etj.
Për të filluar, duhet të instaloni docker.
- Së pari, duhet të instaloni varësitë
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Për lidhjen e depot
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Pastaj instaloni edicionin docker community
$ sudo yum install docker-ce docker-ce-cli containerd.io - Shtoni docker në autoload dhe filloni
$ sudo systemctl enable docker $ sudo systemctl start docker - Shtoni përdoruesin në grupin docker, për të marrë mundësinë për të ekzekutuar docker pa sudo
$ usermod -aG docker user
Hapi tjetër është të instaloni docker-compose. Mund ta instaloni utilitarin në disa mënyra, por unë preferoj ta instaloj përmes menaxherit pip dhe virtualenv, në mënyrë që të mos ndot sistemin me paketa të panevojshme.
- Instalo pip
$ sudo yum install python-pip - Instalo virtualenv
$ pip install virtualenv - Më pas duhet të krijoni një dosje për projektin dhe ta inicializoni atë. Dosja me gjithçka të nevojshme për menaxhimin e paketimeve do të quhet ve.
$ mkdir docker $ cd docker $ virtualenv ve - Për të filluar të përdorni ambientin virtual duhet të ekzekutoni komandën e mëposhtme në dosjen e projektit.
$ source ve/bin/activate - Mund të instaloni docker-compose.
pip install docker-composePër që enët të shohin njëra-tjetrën, do të krijojmë një rrjet. Me të drejtë, përdoret drejtuesi bridge.
$ docker network create networkMë pas duhet të konfiguroni docker-compose, proxy do të ndodhet në dosjen proxy, siti provues në dosjen test. Për shembuj, po përdor emrin e domenit example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.ymlPërmbajtja 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:Variabël ambienti NGINX_PROXY_CONTAINER nevojitet që konteineri letsencrypt të shohë konteinerin proxy. Folderat /etc/nginx/certs /etc/nginx/vhost.d dhe /usr/share/nginx/html duhet të përdoren së bashku nga të dy kontenierët. Për funksionimin e duhur të konteinerit letsencrypt, aplikacioni duhet të jetë i aksesueshëm në portet 80 dhe 443.
Përmbajtja 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 - LETSENCRYPT_EMAIL=admin@example.comKëtu variablat e ambientit nevojiten që proxy të trajtojë saktë kërkesat ndaj serverit dhe të kërkojë një certifikatë për emrin e duhur të domain-it.
Mbete vetëm të nisen docker-compose
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Burimi: habr.com
