Docker部署SayHello(FastAPI)
前言
昨天发了一个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 **可选项:docker换源(加速)**
https://blog.csdn.net/weixin_43463225/article/details/105059738
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
参考资料及感谢
感谢资料提供者/作者
- https://aqzt.com/bubble/6513.html
- https://www.cnblogs.com/tian874540961/p/11916832.html
- https://www.runoob.com/docker/docker-dockerfile.html
Docker部署SayHello(FastAPI)的更多相关文章
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- Docker部署Hadoop集群
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...
- 程序开发使用docker部署
我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...
- 我使用celery以及docker部署遇到的问题
首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...
- Docker部署SDN环境
2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...
- 在生产环境使用Docker部署应用
导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...
- Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...
- NET Core Docker部署
NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...
- 我使用 Docker 部署 Celery 遇到的问题
问题1 - Sending due task 本机测试时没有问题的,但是在线上 docker 中,任务一直显示 "Sending due task".超时的任务是 Django O ...
随机推荐
- 5.innodb B+tree索引
索引基础 索引是数据结构 1.图例 2.B+tree 特征 1.非叶子节点不保存数据,只用来索引,数据都保存在叶子节点 2.查询任何一条数据,查询的索引深度都是一样的 3. B+ 树中各个页之间是通过 ...
- 在 xunit 测试项目中使用依赖注入
在 xunit 测试项目中使用依赖注入 Intro 之前写过几篇 xunit 依赖注入的文章,今天这篇文章将结合我在 .NET Conf 上的分享,更加系统的分享一下在测试中的应用案例. 之所以想分享 ...
- Gitlab+Jenkins构建一个Go项目
部署Go项目简介 对于golang的发布,之前一直没有一套规范的发布流程,来看看之前发布流程: 方案一 • 开发者本地环境需要将环境变量文件改为正式环境配置 • 编译成可执行文件 • 发送给运维 • ...
- JAVA读取EXCEL_自动生成实体类
代码实现PropertyAnno.java import java.lang.annotation.ElementType; import java.lang.annotation.Retention ...
- 理解Tomcat工作原理
WEB服务器 只要Web上的Server都叫Web Server,但是大家分工不同,解决的问题也不同,所以根据Web Server提供的功能,每个Web Server的名字也会不一样. 按功能分类,W ...
- MM-RFQ询价报价
(1).询价报价单事务码:ME41/ME42/ME43 需要的主数据:采购组织.供应商.采购组,物料 (2)ME47:维护供应商的报价.可以用项目明细的条件对供应商的报价进行详细设置. (3)供应商价 ...
- [leetcode]138. Copy List with Random Pointer复制带有随机指针的链表
public RandomListNode copyRandomList(RandomListNode head) { /* 深复制,就是不能只是复制原链表变量,而是做一个和原来链表一模一样的新链表, ...
- ubuntu安装nfs服务
安装: sudo apt-get install nfs-kernel-server 修改配置文件 /etc/exports 增加以下内容: /NFS *(rw,sync,no_root_squash ...
- Nebula Exchange 工具 Hive 数据导入的踩坑之旅
摘要:本文由社区用户 xrfinbj 贡献,主要介绍 Exchange 工具从 Hive 数仓导入数据到 Nebula Graph 的流程及相关的注意事项. 1 背景 公司内部有使用图数据库的场景,内 ...
- LeetCode 371两数之和
题目描述: 不使用运算符 + 和 - ,计算两整数 a .b 之和. 思路: 既然不能使用运算符操作就要考虑到,位运算的加法. 加法有进位的时候和不进位的时候 ...