# 簡單的前後端部署(Docker, Caddy, AWS) ## 開機器 1. 先去 AWS 開機器,配置可以改,這是我選的配置。 ![](https://i.imgur.com/EdgGuCe.png) 2. 下面的 443 和 80 port 記得開 ![](https://i.imgur.com/mXziqr2.png) 3. 開完之後就可以 ssh 進去機器了。如果剛剛選 key 的時候是選 Create new key pair 的話,記得下載 key。簡單的 ssh 配置: 1. 在 `~/.ssh/config` 中寫 ``` Host {你想要的 host 名稱} HostName {host 的 ip} User ubuntu IdentityFile {你的 key 放的位置} ``` 2. `ssh {你想要的 host 名稱}` 4. 現在應該 ssh 就可以進去你的機器了 ## 環境 1. 裝 Docker: https://docs.docker.com/engine/install/ubuntu/ ```bash sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 2. 裝 Docker Compose ```bash sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose version ``` 3. 裝 Caddy: https://caddyserver.com/docs/install#debian-ubuntu-raspbian ```bash sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy ``` ## Docker 1. 把 docker-compose.yaml 貼進來 2. `sudo docker-compose up -d` 3. 用 `sudo docker ps` 確認 container 有跑起來 ## Caddy 1. `sudo vim /etc/caddy/Caddyfile` 裡面應該會有預設的設定檔 2. 寫 config 檔 (以 port 7001 為例) ``` your.domain.name { reverse_proxy localhost:7001 } ``` 3. `sudo systemctl reload caddy` 4. 去你的 DNS service 把 domain name 用 A 紀錄導到這台的 public ip。