昨天結尾的錯誤訊息説,無法發給 ec2-52-199-213-167.ap-northeast-1.compute.amazonaws.com
這個 domain 正確的 ACME 證書。
所以推測可能我們使用的 AWS DNS 並沒有符合 Let's Encrypt ,所以我們會需要一個正常的 Domain ,那我這邊是直接在 Godaddy 選購,我買了一個 mydocker.online
的 Domain
購買完成後,還需要在 Godaddy 設定 AWS Public IP address
以下步驟我是參考從谷歌大神那邊問來的 文章
A
@
等待的同時我們可以先去本來的專案,將 development.rb
之前設定的
config.hosts << "ec2-52-199-213-167.ap-northeast-1.compute.amazonaws.com:3000" unless Rails.root.join("tmp/hostname.txt").exist?
改為
config.hosts << "mydocker.online" unless Rails.root.join("tmp/hostname.txt").exist?
因為我們現在有換新的 domain 所以這個才需要修改,然後重新 build image 推上 Docker Hub (記得先 login)
docker build -t krystallll/docker_test:1.0 . --push
在 EC2 inatance 裡,先 login 到 Docker Hub,再將最新的 image 拉下來
docker pull krystallll/docker_test:1.0
將本來的
- "traefik.http.routers.app.rule=Host(`ec2-52-199-213-167.ap-northeast-1.compute.amazonaws.com`)"
改為
- "traefik.http.routers.app.rule=Host(`mydocker.online`)"`
並且將 app 的 ports 改為
ports:
- 80:3000
在 docker 的 80 port 對到 app 的 3000 port,並先把 traefik
服務都先註解掉,我先確認這個 domain 確定可以連接,這時使用
docker-compose up
📍我們在設定 Godaddy 選擇了 600 秒,代表 600 秒後才會生效,所以若沒畫面也可能是還沒有成功生效,他最晚一天之內一定會好,如果沒好那可能就是你沒設定好🥺
既然 Domain 都用好了,明天又要重回 traefik debug 地獄🤮🤮🤮