Docker部署Flutter web项目

510 阅读3分钟

Flutter web已经发展到稳定版了,之前开发的Qools项目现在准备打包,并部署到docker上。

Flutter web构建

在构建前,先run项目,确保项目在本地正常运行。

fvm flutter build web

cd项目根目录,运行上面命令,这里使用了fvm管理flutter sdk版本,所以前面多了个fvm。

图片.png build文件下就会出现web文件夹,文件夹内就是构建好的web项目了,需要把这些部署到服务器。

Docker部署

图片.png Docker是用来做软件发布的一个软件,是一个工具。 需要在自己服务器上安装docker,我的阿里云服务器系统:CentOS8。可以参考:www.runoob.com/docker/cent…

安装docker

先登入服务器,终端输入

sudo yum install -y docker

启动docker服务

sudo systemctl start docker

systemctl enable docker # 开机启动

获取nginx镜像

docker pull nginx

运行 docker images 查看Nginx镜像是否获取成功,若为如下所示即为获取成功。

图片.png

继续运行如下命令,在本机80端口运行Nginx服务器:

docker run -p 80:80 -d nginx

如图 图片.png

列出容器

docker ps

图片.png 记住CONTAINER ID 或 NAMES ,后面会用到。

在服务器新建目录,用来存放前面构建好的web项目,拷贝项目到你的目录中。

  • 服务器存放项目路径:/usr/qson/nginx/html

图片.png

  • 配置文件路径:/usr/qson/nginx/default.conf 如果不需要更改,可以省略这一步

将上面服务器2个路径下的文件拷贝到docker容器

  • 拷贝default.conf文件

如果不需要更改default.conf,可以省略这一步

docker cp /usr/qson/nginx/default.conf ${CONTAINER ID}://etc/nginx/conf.d/default.conf

${CONTAINER ID}这个替换成前面的CONTAINER ID,这边的CONTAINER ID是f8e9bb900547,即

docker cp /usr/qson/nginx/default.conf f8e9bb900547://etc/nginx/conf.d/default.conf
  • 拷贝项目文件
docker cp /usr/qson/nginx/html f8e9bb900547://usr/share/nginx/html

通过服务器终端更新docker nginx

docker exec f8e9bb900547 nginx -s reload

然后浏览器直接输入ip地址访问,即可看到自己的项目

图片.png

qools web项目地址:http://101.37.147.31/

docker容器 更多命令

service docker start # 启动docker
docker run -d -p 80:80  --name mynginx nginx # 通过docker启动nginx

systemctl restart docker # root用户下重启dokcer
systemctl stop docker #root用户下停止docker

docker restart mynginx # 重启nginx mynginx指nginx 容器名

netstat -lnp|grep 80 # 查看80端口进程
kill -9 25158 # 关闭进程

docker ps -a 或者 docker ps # 查看容器
docker exec -it 9df70f9a0714 /bin/bash # 进入容器,9df70f9a0714是容器id,在docker ps中可以获取

docker logs -f mynginx # 跟踪日志情况

whereis nginx 查询nginx路径

其他

# 彻底删除一个正在运行的镜像 步骤

docker ps // 查看所有正在运行容器 
docker stop containerId // containerId 是容器的ID 
docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID 
docker stop $(docker ps -a -q) //  stop停止所有容器 
docker rm $(docker ps -a -q) //   remove删除所有容器
docker images // 查看镜像列表
docker rmi ImageId  //删除镜像 ImageId 是镜像的Id