前言

昨天发了一个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

参考资料及感谢

感谢资料提供者/作者

  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

Docker部署SayHello(FastAPI)的更多相关文章

  1. ASP.NET Core开发-Docker部署运行

    ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...

  2. Docker部署Hadoop集群

    Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Doc ...

  3. 程序开发使用docker部署

    我们公司自己研发了一套 grand-line 系统,使用 docker 来部署项目. 我是第一批小白鼠,一开始网络差,build 一次要半个小时,连接进入 web shell 也很慢,部署一个微信项目 ...

  4. 我使用celery以及docker部署遇到的问题

    首先我本机测试时没有问题的,但是在线上docker中,任务一直显示 "Sending due task".超时的任务是 django orm update 操作,本地不会出现这样的 ...

  5. Docker部署SDN环境

    2014-12-03 by muzi Docker image = Java class Docker container = Java object 前言 5月份的时候,当我还是一个大学生的时候,有 ...

  6. 在生产环境使用Docker部署应用

    导读 Docker现在越来越流行,但是真正在生产环境部署Docker还是个比较新的概念,还没有一个标准的流程.作者是ROR的程序员,作者结合平时的部署经验,联系Docker的特点,向大家分享了其在生产 ...

  7. Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

    版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qclou ...

  8. NET Core Docker部署

    NET Core Docker部署 前言 在前面文章中,介绍了 ASP.NET Core在 macOS,Linux 上基于Nginx和Jexus的发布和部署,本篇文章主要是如何在Docker容器中运行 ...

  9. 我使用 Docker 部署 Celery 遇到的问题

    问题1 - Sending due task 本机测试时没有问题的,但是在线上 docker 中,任务一直显示 "Sending due task".超时的任务是 Django O ...

随机推荐

  1. 【程序包管理】篇章3:CentOS平台下软件包安装方法总结

    1.软件包安装前的学习:程序包管理的基础知识 2.程序包安装的方法介绍: rpm文件的二进制包安装:Linux程序包管理之rpm安装总结 yum安装:Linux程序包管理之yum源安装 链接:本地yu ...

  2. Axis2开发webservice详解

    Axis2开发webservice详解 标签: javawebserviceAxis2 2015-08-10 10:58 1827人阅读 评论(0) 收藏 举报  分类: JAVA(275)  服务器 ...

  3. [linux]makefile多目录

    在使用makefile多目录编写前需要掌握几个函数及符号 自定义变量 target=edit 引用的时候直接使用 $(target) 有点像C语言中的#define,这里的 $(target)会被替换 ...

  4. java数组之基本语义

    A[] a; B[] b=new B[5];print(b)print(b.length)a={new A(),new A()}//聚合初始化:隐式使用new在堆中创建A[] d=new A[];a= ...

  5. 一台PC端安装多店仓信息的删除

    如图所示,安装了多店仓,想要删除其中莫一店仓信息! 步骤一:先找到对应目录,一般默认的目录为C:\Users\xxxx\AppData\Roaming\WebPos2.0\bosnatweiniman ...

  6. Redis基础篇(七)哨兵机制

    上一篇文章介绍了高可靠方案:主从集群模式.通过主从库的读写分离,来保证服务的可靠性. 当某个从库出现故障时,不影响服务的使用,主库仍然可以处理写命令,其他从库可以处理读命令.但主库发生故障,就不能处理 ...

  7. filebeat7.5.2 在 windows server 2008 R2 设置系统服务报错

    今天在windows server 2008 R2 设置filebeat为系统服务报错(在 windows 10 .windows server 2012.windows server 2019下安装 ...

  8. 软件工程与UML代码互改

    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业的要求在哪里https://edu.cnblogs.com/campus/fz ...

  9. <input type="image">表单提交2次 重复插入数据问题

    写一个表单提交用到图片:两种代码. <input type="image" src="xxx.gif"onclick="return dosub ...

  10. LeetCode150 逆波兰表达式求值

    根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...