Docker部署SayHello(FastAPI)

zy7y發表於2021-01-29

前言

昨天發了一個SayHello FastAPI版本,今天部署上自己的伺服器了
體驗地址: http://49.232.203.244:9001/message.html

服務部署

前置條件:以下在centos7.5 雲伺服器實驗通過

yum -y install git	# 安裝git
curl -sSL https://get.daocloud.io/docker | sh	# 安裝docker

git clone https://gitee.com/zy7y/sayhello

git clone https://github.com/zy7y/sayhello

上面兩個命令選一個執行就可了

部署後端

1. 進入到sayhello目錄

cd sayhello

2. 編寫API的Dockerfile(如果有請之直接構建映象- 在下一步)

在sayhello目錄下新建如下Dockerfile

FROM python:3.7
COPY . /app
WORKDIR ./app
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/
EXPOSE 80
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]

簡單說下上面內容做了什麼事情,不一定正確加了些個人理解

FROM python:3.7		# 拉取基礎映象python3.7,本機已有該映象就會使用該映象,沒有就去遠端倉庫拉取,速度慢就需要換下源地址,百度即可(這裡應該就是拉下映象後弄成了個容器)
COPY . /app		# 將當前所在目錄下所有檔案 複製到 容器裡面 /app 目錄下
WORKDIR ./app	# 指定工作目錄,我的理解是後面執行的命令 都相當於在這個目錄下執行了,根目錄的形式吧
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/	# 這步是在容器裡面執行 pip 安裝依賴
EXPOSE 80	# 將容器中80 埠開放
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"]	# 容器執行時將執行 uvicorn main:app --host 0.0.0.0 --port 80 啟動服務

3. 構建映象

docker build -t sayhello .

4. 執行容器

會自動執行dockerfile裡面的CMD命令

docker run -d --name sayhello-fastapi -p 8000:80 sayhello

5. 訪問IP:8000/message,得到如下頁面

部署前端

先確認message.html中的baseURL是不是後端服務的IP地址(127.0.0.1 不行)

1. 進入到sayhello/static目錄

cd sayhello/static/

2. 編寫Dockerfile檔案(如果有請直接進入第三步)

FROM nginx:1.15.2-alpine
COPY . /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

3. 構建映象

docker build -t sayhello-front .

4. 啟動容器

docker run -d --name sayhello-front-9000 -p 9001:80 sayhello-front

5. 訪問IP:9001/message.html

參考資料及感謝

感謝資料提供者/作者

  1. https://aqzt.com/bubble/6513.html
  2. https://www.cnblogs.com/tian874540961/p/11916832.html
  3. https://www.runoob.com/docker/docker-dockerfile.html

相關文章