Ech hunn viru kuerzem de virtuelle Server geännert, an hu missen alles erëm konfiguréieren. Ech léiwer datt de Site iwwer https zougänglech ass a letsencrypt Certificaten automatesch kritt an erneiert ginn. Dëst kann erreecht ginn andeems Dir zwee Docker-Biller benotzt nginx-Proxy an nginx-Proxy-Companion.
Dëst ass e Guide wéi Dir eng Websäit op Docker opstellt, mat engem Proxy deen automatesch SSL Zertifikater kritt. Den CentOS 7 virtuelle Server gëtt benotzt.
Ech huelen un datt de Server scho kaaft gouf, konfiguréiert, ageloggt mat engem Schlëssel, fail2ban installéiert, etc.
Als éischt musst Dir Docker installéieren.
- Als éischt musst Dir Ofhängegkeeten installéieren
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Connect Repository
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Installéiert dann Docker Gemeinschaft Editioun
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Füügt Docker fir ze starten a lafen
$ sudo systemctl enable docker $ sudo systemctl start docker
- Füügt e Benotzer an den Docker-Grupp fir Docker ouni sudo auszeféieren
$ usermod -aG docker user
De nächste Schrëtt ass d'Installatioun vun Docker-compose. D'Utility kann op verschidde Manéieren installéiert ginn, awer ech léiwer duerch de Pip Manager a virtualenv ze installéieren, fir de System net mat onnéidege Packagen ze rächen.
- Installéiert Pip
$ sudo yum install python-pip
- Installéiert virtualenv
$ pip install virtualenv
- Als nächst musst Dir en Dossier mam Projet erstellen an initialiséieren. Den Dossier mat alles wat Dir braucht fir Packagen ze managen gëtt ve genannt.
$ mkdir docker $ cd docker $ virtualenv ve
- Fir d'virtuell Ëmfeld ze benotzen, musst Dir de folgende Kommando am Projet Dossier lafen.
$ source ve/bin/activate
- Dir kënnt docker-compose installéieren.
pip install docker-compose
Fir datt d'Container sech géigesäiteg gesinn, kreéiere mir en Netzwierk. Par défaut gëtt de Bréck Chauffer benotzt.
$ docker network create network
Als nächst musst Dir Docker-compose konfiguréieren, de Proxy ass am Proxy Dossier, den Test Site ass am Test Dossier. Zum Beispill benotzen ech den Domain Numm example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Inhalt 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:
Ëmfeld Variabel NGINX_PROXY_CONTAINER et ass néideg fir de Letsencrypt Container de Proxy Container ze gesinn. D' /etc/nginx/certs /etc/nginx/vhost.d an /usr/share/nginx/html Ordner musse vu béide Container gedeelt ginn. Fir datt de letsencrypt Container richteg funktionnéiert, muss d'Applikatioun souwuel um Port 80 wéi och 443 zougänglech sinn.
Inhalt 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]
Hei sinn Ëmfeldvariablen gebraucht fir datt de Proxy d'Ufro un de Server korrekt veraarbecht an e Certificat fir de richtege Domain Numm freet.
Alles wat bleift ass docker-compose ze lafen
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Source: will.com