Recentemente aghju cambiatu un servitore virtuale, è aghju avutu à stallà tuttu di novu. Preferite chì u situ sia accessibile nantu à https è per i certificati di letsencrypt per esse acquistati è rinnuvati automaticamente. Questu pò esse ottenutu usendu duie imagine docker nginx-proxy è nginx-proxy-companion.
Questa hè una guida nantu à cumu cunfigurà un situ in docker, cù un proxy chì riceve automaticamente certificati SSL. U servitore virtuale CentOS 7 hè adupratu.
Assumimu chì u servitore hè digià acquistatu, cunfiguratu, l'accessu à questu hè realizatu da chjave, fail2ban hè stallatu, etc.
Prima avete bisognu di stallà Docker.
- Prima avete bisognu di stallà e dipendenze
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Cunnette u repository
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Allora installate l'edizione comunità di docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Aghjunghjite docker à l'iniziu è eseguite
$ sudo systemctl enable docker $ sudo systemctl start docker
- Aghjunghjite un utilizatore à u gruppu docker per pudè eseguisce docker senza sudo
$ usermod -aG docker user
U prossimu passu hè di stallà docker-compose. L'utilità pò esse installata in parechje manere, ma aghju preferitu à stallà attraversu u pip manager è virtualenv, per ùn impiccà u sistema cù pacchetti innecessarii.
- Installa pip
$ sudo yum install python-pip
- Installa virtualenv
$ pip install virtualenv
- Dopu, avete bisognu di creà un cartulare cù u prugettu è inizializà. U cartulare cù tuttu ciò chì hè necessariu per a gestione di pacchetti serà chjamatu ve.
$ mkdir docker $ cd docker $ virtualenv ve
- Per cumincià à utilizà l'ambiente virtuale, avete bisognu di eseguisce u cumandimu seguitu in u cartulare di u prugettu.
$ source ve/bin/activate
- Pudete installà docker-compose.
pip install docker-compose
Per chì i cuntenituri si vedanu, creamu una reta. U driver di ponte hè utilizatu per difettu.
$ docker network create network
Dopu, avete bisognu di cunfigurà docker-compose, u proxy serà in u cartulare proxy, u situ di prova in u cartulare di prova. Per esempiu, aghju utilizatu u nome di duminiu example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Cuntenutu 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:
variabile ambientale NGINX_PROXY_CONTAINER necessariu per u container letsencrypt per vede u containeru proxy. U cartulare /etc/nginx/certs /etc/nginx/vhost.d è /usr/share/nginx/html deve esse spartutu da i dui cuntenituri. Per chì u containeru letsencrypt funziona bè, l'applicazione deve esse dispunibule nantu à i porti 80 è 443.
Cuntenutu 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]
Quì, e variabili di l'ambienti sò necessarii per chì u proxy processa currettamente a dumanda à u servitore è dumanda un certificatu per u nome di duminiu currettu.
Resta solu per eseguisce docker-compose
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Source: www.habr.com