Min vê dawîyê servera virtual guhert, û neçar ma ku her tiştî dîsa mîheng bikim. Ez tercîh dikim ku malper bi https ve were gihîştin û sertîfîkayên letsencrypt bixweber werin wergirtin û nûve kirin. Ev dikare bi karanîna du wêneyên docker nginx-proxy û nginx-proxy-companion were bidestxistin.
Ev rêbernameyek e ku meriv çawa malperek li ser Docker saz dike, bi proxyek ku bixweber sertîfîkayên SSL-ê distîne. Pêşkêşkara virtual CentOS 7 tê bikar anîn.
Ez texmîn dikim ku server jixwe hatî kirîn, mîheng kirin, bi karanîna mifteyek têketin, fail2ban hatî saz kirin, hwd.
Pêşî hûn hewce ne ku docker saz bikin.
- Pêşî hûn hewce ne ku pêwendiyan saz bikin
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Depoyê girêdin
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- Dûv re guhertoya civata docker saz bikin
$ sudo yum install docker-ce docker-ce-cli containerd.io
- Dockerê li destpêkirinê zêde bikin û bixebitin
$ sudo systemctl enable docker $ sudo systemctl start docker
- Bikarhênerek li koma docker zêde bikin da ku bikaribe docker bêyî sudo bimeşîne
$ usermod -aG docker user
Pêngava paşîn sazkirina docker-compose ye. Karûbar dikare bi çend awayan were saz kirin, lê ez tercîh dikim ku ez bi navgîniya rêveberê pip û virtualenv-ê saz bikim, da ku pergalê bi pakêtên nehewce re nehêlim.
- Pip saz bikin
$ sudo yum install python-pip
- virtualenv saz bikin
$ pip install virtualenv
- Piştre hûn hewce ne ku peldankek bi projeyê re biafirînin û wê dest pê bikin. Peldanka bi her tiştê ku hûn ji bo birêvebirina pakêtan hewce ne dê jê re vebêjin.
$ mkdir docker $ cd docker $ virtualenv ve
- Ji bo ku hûn dest bi karanîna jîngeha virtual bikin, hûn hewce ne ku emrê jêrîn di peldanka projeyê de bimeşînin.
$ source ve/bin/activate
- Hûn dikarin docker-compose saz bikin.
pip install docker-compose
Ji bo ku konteynir hevdu bibînin, em ê torgilokek çêbikin. Bi xwerû, ajokera pirê tê bikar anîn.
$ docker network create network
Dûv re hûn hewce ne ku docker-compose mîheng bikin, proxy dê di peldanka proxy de be, malpera testê dê di peldanka ceribandinê de be. Mînakî, ez navê domainê example.com bikar tînim
$ mkdir proxy $ mkdir test $ touch proxy/docker-compose.yml $ touch test/docker-compose.yml
Dilşad 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:
Guherbara jîngehê NGINX_PROXY_CONTAINER pêdivî ye ku konteynera letsencrypt konteynera proxy bibîne. Peldankên /etc/nginx/certs /etc/nginx/vhost.d û /usr/share/nginx/html divê ji hêla herdu konteyneran ve werin parve kirin. Ji bo ku konteynera letsencrypt rast bixebite, pêdivî ye ku serîlêdan hem li porta 80 û 443-ê bigihîje.
Dilşad 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]
Li vir, guhêrbarên jîngehê hewce ne da ku proxy bi rast daxwazê ji serverê re pêvajoyê bike û ji bo navê domainê rast sertîfîkayek bixwaze.
Tiştê ku dimîne ev e ku meriv docker-compose bimeşîne
$ cd proxy $ docker-compose up -d $ cd ../test $ docker-compose up -d
Source: www.habr.com