记录下自己部署过程,先从前端简单的开始
使用最简单的方式部署,前提是要了解Docker是干嘛的,并安装了Docker
部署前端项目:
从掘金看一个合成大西瓜的游戏源代码:
https://juejin.cn/post/6923803717808422925

拿过来稍稍魔改一下玩玩:
用cocosDashbord替换素材重新构建一下

直接打开index.html,效果如下图

原项目地址:https://github.com/tangxiangmin/cocos-big-watermelon,我改了下素材
接下来在这个index.html文件夹目录下创建Dockerfile文件,并输入以下内容
FROM nginx#指定基础镜像,必须为第一个命令COPY . /usr/share/nginx/html/
#本地Dockerfile文件目录所有内容添加到容器/usr/share/nginx/html/目录中
在index.html文件下打开命令行工具输入镜像打包命令:
docker build -t testimage .
-t后面的testimage是镜像的名字及标签,‘.’这个符号为当前目录查找DockerFile文件。执行DockerFile文件内容,生成一个名为testimage的镜像。后面将会把这个镜像run一个容器出来,或者上传到镜像仓库
接下来在命令行输入 docker images 可以看到这个testimage镜像

接下来在命令行输入docker命令:
docker run --name testcontainer -d -p 8090:80 testimage
--name后面 testcontainer 指定容器名称。
-p后面把容器80端口映射到宿主机8090端口,宿主机就是运行命令的电脑,Dockerfile里面FROM nginx,这个容器就直接有nginx环境并把目录在/usr/share/nginx/html/ 里的代码暴露在80端口,访问index.html就直接看到这个前端项目了,访问宿主机8090端口就等于访问容器80端口。
-d指后台运行容器并返回容器ID, 最后面testimage是镜像名字
现在就直接可以用docker ps 看到现在运行的容器:
访问127.0.0.1:8090/index.html 试试:

可以看到直接可以了。可以把镜像直接运行到有公网ip的机器上直接公网ip访问:
公网ip:8090/index.html,
还可以在公网ip的机器上安装nginx,用域名解析上去,项目就上线了。
我自己稍微部署了一下:
xg.twgcs.xyz
部署后端项目:
后端项目比前端要复杂一点点,需要安装一些依赖包:
我们来用下最近特别火的基于Python的Web框架FastAPI,性能非常高,代码也很少的异步框架,跟Flask差不多,很简单
我们从本地把它跑起来吧,写一个接口
需要先本地安装两个包
pip install uvicornpip install fastapi
uvicorn:我的看法是类似于nginx的一种服务器软件,
百度是说:
Uvicorn 是基于 uvloop 和 httptools 构建的非常快速的 ASGI 服务器
什么是ASGI:
异步网关协议接口,一个介于网络协议服务和 Python 应用之间的标准接口,能够处理多种通用的协议类型,包括 HTTP,HTTP2 和 WebSocket
新建一个main.py输入一下框架最简代码:
from fastapi import FastAPIapp = FastAPI()@app.get("/index")async def index():return {'code': 200, 'msg': 'FastAPI niubi'}
启动命令:
uvicorn main:app --reload

修改代码会自动更新,框架默认暴露的端口为8000,来试试:

接下来在main.py文件夹下新建Dockerfile文件输入以下内容
FROM wynemo/python38# 我想在python38环境下运行这个容器需要docker search搜索一下相关镜像,不能直接FROM python38。ADD . /code# ADD命令是将宿主机Dockerfile目录下所有的代码复制到wynemo/python38这个虚拟机镜像里/code目录下WORKDIR /code# WORKDIR是指以后的命令在该文件夹下执行,等同于cd命令RUN python3 -m pip install --upgrade pip -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com \&& pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com fastapi \&& pip3 install -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com uvicorn# RUN命令 这里主要做升级包管理工具,安装依赖包两个功能,后面-i是直接指定依赖包的源地址,加快构建速度。还可以做其他的跟多的功能,比如数据区迁移,清除缓存什么的。CMD uvicorn main:app --host '0.0.0.0' --port 8080 --reload#CMD 是指镜像运行时执行的命令,让容器里面的服务运行起来。--host能指定FastAPI的运行ip,不能指定为127.0.0.1,不然只能容器内访问啦。--port指框架运行的端口,后面运行容器会用到
在项目根目录下执行打包镜像命令,这里直接说命令了,不仔细截图了
docker build -t docker-fastapi:latest .
运行容器
docker run --name docker-fastapi -d -p 8100:8080 docker-fastapi
最后访问127.0.0.1:8100/index 试一下

部署成功,因为后端项目就是简单尝试就到此为止啦。
补充
最后补充一下,在线上运行时需要让docker开机自动启动,还需要在docker服务重启后容器也自动重启
加上--restart=always命令
docker run --restart=always
已经容器已经启动了,使用docker update命令
docker update --restart=always




