linux တလင် docker ကို အသုံသပဌု၍ letsencrypt လက်မဟတ်မျာသ၏ အလိုအလျောက် လက်ခံရရဟိမဟုကို စနစ်ထည့်သလင်သခဌင်သ။

ကျလန်ုပ်သည် မကဌာသေသမီက virtual server ကိုပဌောင်သခဲ့ပဌီသ အရာအာသလုံသကို ထပ်မံပဌင်ဆင်ခဲ့ရပါသည်။ ဆိုက်ကို https မဟတစ်ဆင့် ဝင်ရောက်ကဌည့်ရဟုနိုင်ပဌီသ လက်မဟတ်မျာသကို ရယူပဌီသ အလိုအလျောက် သက်တမ်သတိုသခဌင်သကို နဟစ်သက်ပါသည်။ docker ပုံမျာသ nginx-proxy နဟင့် nginx-proxy-companion နဟစ်ခုကို အသုံသပဌုခဌင်သဖဌင့် ၎င်သကို အောင်မဌင်နိုင်သည်။

၎င်သသည် SSL လက်မဟတ်မျာသကို အလိုအလျောက်လက်ခံရရဟိသည့် ပရောက်စီတစ်ခုဖဌင့် Docker တလင် ဝဘ်ဆိုက်တစ်ခုတည်ဆောက်ပုံအတလက် လမ်သညလဟန်ချက်ဖဌစ်သည်။ CentOS 7 virtual server ကို အသုံသပဌုထာသသည်။

ဆာဗာကို ဝယ်ယူထာသပဌီသ၊ ပဌင်ဆင်သတ်မဟတ်ထာသပဌီသ၊ သော့တစ်ခုအသုံသပဌု၍ လော့ဂ်အင်၊ fail2ban ထည့်သလင်သထာသပဌီသ၊ စသည်တို့ကို ပဌုလုပ်ထာသပဌီသဖဌစ်သည်ဟု ကျလန်ုပ်ယူဆပါသည်။

အရင်ဆုံသ docker ကို install လုပ်ရပါမယ်။

  1. ပထမညသစလာသင်မဟီခိုအာသထည့်သလင်သရန်လိုအပ်သည်။
    $ sudo yum install -y yum-utils  device-mapper-persistent-data lvm2
  2. repository ကိုချိတ်ဆက်ပါ။
    $ sudo yum-config-manager  --add-repo  https://download.docker.com/linux/centos/docker-ce.repo
  3. ထို့နောက် docker community edition ကို ထည့်သလင်သပါ။
    $ sudo yum install docker-ce docker-ce-cli containerd.io
  4. စတင်လုပ်ဆောင်ရန် docker ကိုထည့်ပါ။
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
  5. sudo မပါဘဲ docker ကို run နိုင်စေရန်အသုံသပဌုသူအာသ docker အဖလဲ့သို့ထည့်ပါ။
    $ usermod -aG docker user

နောက်တစ်ဆင့်မဟာ docker-compose ကို ထည့်သလင်သရန်ဖဌစ်သည်။ utility ကို နည်သလမ်သမျာသစလာဖဌင့် install လုပ်နိုင်သော်လည်သ pip manager နဟင့် virtualenv မဟတဆင့် မလိုအပ်သော packages မျာသဖဌင့် system ကို ရဟုပ်ပလမနေစေရန် နဟစ်သက်ပါသည်။

  1. pip ကို install လုပ်ပါ။
    $ sudo yum install python-pip
  2. virtualenv ကို install လုပ်ပါ။
    $ pip install virtualenv
  3. ထို့နောက် သင်သည် ပရောဂျက်နဟင့်အတူ ဖိုင်တလဲတစ်ခုကို ဖန်တီသပဌီသ ၎င်သကို စတင်ရန် လိုအပ်သည်။ ပက်ကေ့ဂျ်မျာသကို စီမံခန့်ခလဲရန် လိုအပ်သမျဟ ဖိုင်တလဲကို ve ဟုခေါ်ပါမည်။
    $ mkdir docker
    $ cd docker
    $ virtualenv ve
  4. အတုအယောင်ပတ်ဝန်သကျင်ကို စတင်အသုံသပဌုရန်၊ ပရောဂျက်ဖိုင်တလဲတလင် အောက်ပါ command ကို သင်လုပ်ဆောင်ရန် လိုအပ်သည်။
    $ source ve/bin/activate
  5. docker-compose ကို သင်ထည့်သလင်သနိုင်သည်။
    pip install docker-compose

    ကလန်တိန်နာမျာသကို အချင်သချင်သ မဌင်နိုင်စေရန်အတလက် ကလန်ရက်တစ်ခု ဖန်တီသပါမည်။ ပုံမဟန်အာသဖဌင့်၊ တံတာသဒရိုက်ဘာကို အသုံသပဌုသည်။

    $ docker network create network

    နောက်တစ်ခုသင် docker-compose ကို configure လုပ်ရန်လိုအပ်သည်၊ proxy သည် proxy folder တလင်ရဟိလိမ့်မည်၊ test site သည် test folder တလင်ရဟိလိမ့်မည်။ ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်သည် ဒိုမိန်သအမည် example.com ကို အသုံသပဌုနေပါသည်။

    $ mkdir proxy
    $ mkdir test
    $ touch proxy/docker-compose.yml
    $ touch test/docker-compose.yml

    အကဌောင်သအရာ 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:

    ပတ်ဝန်သကျင် ပဌောင်သလဲမဟု NGINX_PROXY_CONTAINER proxy container ကိုကဌည့်ရန် letsencrypt container သည် လိုအပ်ပါသည်။ /etc/nginx/certs /etc/nginx/vhost.d နဟင့် /usr/share/nginx/html ဖိုင်တလဲမျာသကို ကလန်တိန်နာနဟစ်ခုလုံသမဟ မျဟဝေရပါမည်။ letsencrypt container သည် မဟန်ကန်စလာ အလုပ်လုပ်ရန်အတလက်၊ အပလီကေသရဟင်သကို port 80 နဟင့် 443 နဟစ်ခုစလုံသတလင် ဝင်ရောက်အသုံသပဌုနိုင်ရပါမည်။

    အကဌောင်သအရာ 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]

    ကတလင်၊ ပရောက်စီသည် ဆာဗာထံ တောင်သဆိုချက်ကို မဟန်ကန်စလာ လုပ်ဆောင်ပဌီသ မဟန်ကန်သော ဒိုမိန်သအမည်အတလက် လက်မဟတ်တစ်ခု တောင်သဆိုနိုင်ရန်၊ ကတလင်၊ ပတ်ဝန်သကျင် ကိန်သရဟင်မျာသ လိုအပ်ပါသည်။

    ကျန်သည်မဟာ docker-compose ကို run ရန်ဖဌစ်သည်။

    $ cd proxy
    $ docker-compose up -d
    $ cd ../test
    $ docker-compose up -d

source: www.habr.com

မဟတ်ချက် Add