Mwen fèk chanje sèvè vityèl la, epi mwen te oblije configured tout bagay ankò. Mwen prefere ke sit la aksesib atravè https epi kite sètifika yo jwenn ak renouvle otomatikman. Sa a ka reyalize lè w itilize de imaj docker nginx-proxy ak nginx-proxy-companion.
Sa a se yon gid sou kòman yo mete kanpe yon sit entènèt sou Docker, ak yon prokurasyon ki otomatikman resevwa sètifika SSL. Yo itilize sèvè vityèl CentOS 7 la.
Mwen sipoze ke sèvè a te deja achte, konfigirasyon, konekte lè l sèvi avèk yon kle, fail2ban enstale, elatriye.
Premye ou bezwen enstale Docker.
- Premye ou bezwen enstale depandans
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Konekte depo
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Lè sa a, enstale Docker edisyon kominote a
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Ajoute Docker nan demaraj epi kouri
$ sudo systemctl enable docker $ sudo systemctl start docker
- Ajoute yon itilizatè nan gwoup docker pou kapab kouri docker san sudo
$ usermod -aG docker user
Pwochen etap la se enstale docker-compose. Yo ka enstale sèvis piblik la nan plizyè fason, men mwen prefere enstale atravè manadjè a pip ak virtualenv, pou yo pa ankonbre sistèm nan ak pakè ki pa nesesè.
- Enstale pip
$ sudo yum install python-pip
- Enstale virtualenv
$ pip install virtualenv
- Apre sa, ou bezwen kreye yon katab ak pwojè a epi inisyalize li. Katab la ak tout sa ou bezwen pou jere pakè yo pral rele ve.
$ mkdir docker $ cd docker $ virtualenv ve
- Pou kòmanse itilize anviwònman vityèl la, ou bezwen kouri lòd sa a nan katab pwojè a.
$ source ve/bin/activate
- Ou ka enstale docker-compose.
pip install docker-compose
Nan lòd pou resipyan yo wè youn ak lòt, nou pral kreye yon rezo. Pa default, yo itilize chofè pon an.
$ docker network create network
Apre sa, ou bezwen konfigirasyon docker-compose, prokurasyon an pral nan katab la prokurasyon, sit tès la pral nan katab tès la. Pa egzanp, mwen itilize non domèn example.com
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Kontni 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:
Anviwònman varyab NGINX_PROXY_CONTAINER li nesesè pou veso letsencrypt la wè veso prokurasyon an. Dosye /etc/nginx/certs /etc/nginx/vhost.d ak /usr/share/nginx/html yo dwe pataje pa tou de veso yo. Pou veso letsencrypt la travay kòrèkteman, aplikasyon an dwe aksesib sou tou de pò 80 ak 443.
Kontni 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]
Isit la, varyab anviwònman yo bezwen pou ke prokurasyon an kòrèkteman trete demann lan nan sèvè a epi mande yon sètifika pou non an domèn kòrèk.
Tout sa ki rete se kouri docker-compose
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Sous: www.habr.com