Es nesen nomainīju virtuālo serveri, un viss bija jākonfigurē vēlreiz. Es dodu priekšroku tam, lai vietne būtu pieejama, izmantojot https, un ļautu automātiski iegūt un atjaunot sertifikātus. To var panākt, izmantojot divus docker attēlus nginx-proxy un nginx-proxy-companion.
Šis ir ceļvedis, kā izveidot vietni Docker, izmantojot starpniekserveri, kas automātiski saņem SSL sertifikātus. Tiek izmantots CentOS 7 virtuālais serveris.
Pieņemu, ka serveris jau ir iegādāts, konfigurēts, pieteicies ar atslēgu, fail2ban uzstādīts utt.
Vispirms jums jāinstalē docker.
- Vispirms jāinstalē atkarības
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Pievienojiet repozitoriju
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Pēc tam instalējiet docker kopienas izdevumu
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Pievienojiet docker startēšanai un palaišanai
$ sudo systemctl enable docker $ sudo systemctl start docker
- Pievienojiet lietotāju docker grupai, lai varētu palaist docker bez sudo
$ usermod -aG docker user
Nākamais solis ir instalēt docker-compose. Lietderību var instalēt vairākos veidos, taču es dodu priekšroku instalēšanai caur pip pārvaldnieku un virtualenv, lai nepārblīvētu sistēmu ar nevajadzīgām pakotnēm.
- Instalējiet pip
$ sudo yum install python-pip
- Instalējiet virtualenv
$ pip install virtualenv
- Tālāk jums ir jāizveido mape ar projektu un jāinicializē. Mape ar visu nepieciešamo pakotņu pārvaldībai tiks saukta par ve.
$ mkdir docker $ cd docker $ virtualenv ve
- Lai sāktu lietot virtuālo vidi, projekta mapē ir jāpalaiž šāda komanda.
$ source ve/bin/activate
- Varat instalēt docker-compose.
pip install docker-compose
Lai konteineri redzētu viens otru, mēs izveidosim tīklu. Pēc noklusējuma tiek izmantots tilta draiveris.
$ docker network create network
Tālāk jums jākonfigurē docker-compose, starpniekserveris atradīsies starpniekservera mapē, testa vietne būs testa mapē. Piemēram, es izmantoju domēna nosaukumu example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Saturs 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:
Vides mainīgais NGINX_PROXY_CONTAINER ir nepieciešams, lai konteiners letsencrypt redzētu starpniekservera konteineru. Mapes /etc/nginx/certs /etc/nginx/vhost.d un /usr/share/nginx/html ir jākoplieto abiem konteineriem. Lai letsencrypt konteiners darbotos pareizi, lietojumprogrammai ir jābūt pieejamai gan portā 80, gan 443.
Saturs 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]
Šeit ir nepieciešami vides mainīgie, lai starpniekserveris pareizi apstrādātu pieprasījumu serverim un pieprasītu sertifikātu pareizajam domēna nosaukumam.
Atliek tikai palaist docker-compose
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Avots: www.habr.com