前言
昨天發了一個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.7COPY . /appWORKDIR ./appRUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/EXPOSE 80CMD ["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-alpineCOPY . /usr/share/nginx/htmlCOPY nginx.conf /etc/nginx/conf.d/default.confEXPOSE 80CMD ["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參考資料及感謝
感謝資料提供者/作者
https://aqzt.com/bubble/6513.htmlhttps://www.cnblogs.com/tian874540961/p/11916832.htmlhttps://www.runoob.com/docker/docker-dockerfile.html