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.
- Earst moatte jo ôfhinklikens ynstallearje
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Ferbine repository
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Ynstallearje dan docker community edysje
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Foegje docker ta oan opstarten en útfiere
$ sudo systemctl enable docker $ sudo systemctl start docker
- 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.
- Ynstallearje pip
$ sudo yum install python-pip
- Ynstallearje virtualenv
$ pip install virtualenv
- 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
- Om de firtuele omjouwing te brûken, moatte jo it folgjende kommando útfiere yn 'e projektmap.
$ source ve/bin/activate
- 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