Hiljem vahetasin virtuaalset serverit ja pidin kõik uuesti seadistama. Eelistaksin, et veebileht oleks saadaval https protokolli kaudu ja et letsencrypt sertifikaadid saadakse ja pikendatakse automaatselt. Seda saab saavutada, kasutades kahte docker pildi: nginx-proxy ja nginx-proxy-companion.
See juhend selgitab, kuidas seadistada veebilehte dockeris, koos proksi, mis automaatselt saab SSL sertifikaadid. Kasutatakse virtuaalset serverit CentOS 7.
Oletan, et server on juba ostetud, seadistatud, sisselogimine toimub võtme kaudu, fail2ban on paigaldatud jne.
Esmalt tuleb paigaldada docker.
- Esialgu tuleb paigaldada sõltuvused
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Ühendage hoidla
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Siis paigaldage docker community edition
$ sudo yum install docker-ce docker-ce-cli containerd.io - Lisage docker automaatkäivitusse ja käivitage
$ sudo systemctl enable docker $ sudo systemctl start docker - Lisage kasutaja docker gruppi, et saada võimalus käivitada docker ilma sudo-ta
$ usermod -aG docker user
Järgmine samm on docker-compose'i 설치imine. Tööriista saab installida mitmel viisil, kuid mina eelistan seda installida pip-i halduriga ja virtualenv-iga, et mitte süsteemi tarbetute paketidega täita.
- Paigaldada pip
$ sudo yum install python-pip - Paigaldada virtualenv
$ pip install virtualenv - Seejärel tuleb luua projekti kaust ja see initsialiseerida. Kõik pakettide haldamiseks vajalikud asjad on kaustas nimega ve.
$ mkdir docker $ cd docker $ virtualenv ve - Et alustada virtuaalse keskkonna kasutamist, tuleb projektikaustas käivitada järgmine käsk.
$ source ve/bin/activate - Docker-compose'i saab installida.
pip install docker-composeKonteinerite omavaheliseks nägemiseks loome võrgu. Vaikimisi kasutatakse silda (bridge) draiverit.
$ docker network create networkSeejärel tuleb seadistada docker-compose, proxy asub kaustas proxy ja testimisleht kaustas test. Näiteks kasutan domeeninime example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.ymlSisu proxy/docker-compose.yml
versioon: '3' võrgud: default: väline: nimi: network teenused: nginx-proxy: konteineri_nimi: nginx-proxy pilt: jwilder/nginx-proxy portid: - 80:80 - 443:443 mahud: - 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: konteineri_nimi: nginx-proxy-letsencrypt pilt: jrcs/letsencrypt-nginx-proxy-companion mahud: - certs:/etc/nginx/certs - vhost.d:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro keskkond: - NGINX_PROXY_CONTAINER=nginx-proxy mahud: certs: vhost.d: html:Keskkonnamuutuja NGINX_PROXY_CONTAINER on vajalik, et letsencrypt konteiner näeks proxy konteinerit. Kaustad /etc/nginx/certs, /etc/nginx/vhost.d ja /usr/share/nginx/html peavad olema mõlema konteineri jaoks jagatud. Letsencrypt konteineri nõuetekohaseks tööks peab rakendus olema juurdepääsetav nii 80. kui 443. pordil.
Sisu test/docker-compose.yml
versioon: '3' võrgud: default: väline: nimi: network teenused: nginx: konteineri_nimi: nginx pilt: nginx:latest keskkond: - VIRTUAL_HOST=example.com - LETSENCRYPT_HOST=example.com - LETSENCRYPT_EMAIL=admin@example.comSiin on keskkonnamuutujad vajalikud, et proxy saaks korralikult teen serverist taotlusi ning küsib sertifikaati õige domeeninime jaoks.
Jäänud on ainult docker-compose käivitamine
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Allikas: habr.com
