Vahetasin hiljuti virtuaalservi ja pidin kõik seaded uuesti üles seadma. Eelistaksin, et veebisait oleks saadaval https kaudu ja letsencrypti sertifikaadid saaks automaatselt hankida ja pikendada. Seda on võimalik saavutada, kasutades kahte docker'i pilti nginx-proxy ja nginx-proxy-companion.
See juhend näitab, kuidas seadistada veebisait docker'is, kasutades proksi, mis automaatselt saadab SSL sertifikaadid. Kasutatakse virtuaalserverit CentOS 7.
Eeldan, et server on juba ostetud, seadistatud, ja sisse logimine toimub võtme abil, fail2ban on installitud jne.
Esmalt tuleb installida docker.
- Esmalt tuleb installida sõltuvused
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 - Lisa repository
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo - Seejärel installige docker community edition
$ sudo yum install docker-ce docker-ce-cli containerd.io - Lisa docker autoload'i ja käivita see
$ sudo systemctl enable docker $ sudo systemctl start docker - Lisa kasutaja docker gruppi, et saada võimalus käivitada docker ilma sudo't kasutamata
$ usermod -aG docker user
Järgmine samm on docker-compose'i installimine. Tööriista saab installida mitmel moel, kuid eelistaksin seda installida pip manageri ja virtualenv'i abil, et mitte süsteemi tarbetute pakettidega ummistada.
- Installige pip
$ sudo yum install python-pip - Installige virtualenv
$ pip install virtualenv - Seejärel tuleb luua projektikaust ja see initsialiseerida. Kõik vajalik pakettide haldamiseks olev kaust kannab nime ve.
$ mkdir docker $ cd docker $ virtualenv ve - Et hakata virtuaalsest keskkonnast kasutama, tuleb projekti kaustas käivitada järgmine käsk.
$ source ve/bin/activate - Nüüd saab installida docker-compose'i.
pip install docker-composeEt konteinerid üksteist näeksid, loome võrgu. Vaikimisi kasutatakse silla draiverit.
$ docker network create networkSeejärel tuleb seadistada docker-compose, proksi asub kaustas proxy, test veebisait 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: vaikimisi: väline: nimi: võrk teenused: nginx-proxy: konteineri_nimi: nginx-proxy pilt: jwilder/nginx-proxy sadamad: - 80:80 - 443:443 mahutid: - 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 mahutid: - 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 mahutid: 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 jagatud mõlema konteineri vahel. Letsencrypt konteineri korrektseks tööks peab rakendus olema juurdepääsetav nii sadamas 80 kui 443.
Sisu test/docker-compose.yml
versioon: '3' võrgud: vaikimisi: väline: nimi: võrk 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 õigesti töötlema päringut serverile ja küsida sertifikaati õige domeeninime jaoks.
Jäänud on ainult käivitada docker-compose
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Allikas: habr.com
