使用Docker部署js前端
1.创建Dockerfile
在项目跟目录下创建Dockerfile文件:
# 使用nginx作为基础镜像
FROM nginx:1.19.1
# 指定工作空间
WORKDIR /data/web
# 将 yarn build 打包后的build文件夹添加到工作空间
ADD build build
# 将项目必要文件添加到工作空间,这里我们把nginx配置文件维护在项目里,部署时直接移动配置文件,就不需要在去处理nginx配置了
COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf
# 暴露80端口
EXPOSE 80
# 启动nginx,要用前台启动
ENTRYPOINT ["nginx", "-g", "daemon off;"]
2.打包项目代码
假设使用yarn构建的前端
yarn build
3.打包镜像
打包最新镜像,镜像名为web,tag为latest
docker build -t web:latest .
查看打包好的镜像
docker images
4.启动容器
使用镜像web:latest启动容器,容器名称为my-web,端口映射到8000
docker run -d --name my-web -p 8000:80 web:latest
查看运行中的容器
docker ps
最后直接在浏览器打开 ip:8000,就可以看到web页面了
使用Docker部署后端
后端打包就更简单了,它不需要nginx环境,直接运行二进制文件就行
1.创建Dockerfile
在项目跟目录下创建Dockerfile文件:
# 使用centos作为基础镜像
FROM centos
# 指定工作空间
WORKDIR /data/service
# 将项目必要文件添加到工作空间
ADD config config
ADD template template
# 将服务打包后的二进制文件添加到工作空间
ADD admin-api admin-api
# 运行二进制文件启动服务
ENTRYPOINT ["./admin-api"]
2.打包镜像启动容器
除了dockerfile不一样,打包镜像和启动容器都是一样的
# 打包项目代码
go build
# 打包镜像
docker build -t admin-api:latest .
# 查看打包好的镜像
docker images
# 使用镜像admin-api:latest启动容器,容器名称为admin-api,端口映射到8001
docker run -d --name admin-api -p 8001:80 admin-api:latest
# 查看运行中的容器
docker ps
以上是docker的简单使用示例,在实际运用过程中,我们还可以把项目打包过程写进dockerfile,或结合ci让gitlab-runner来进行项目打包。打包出来的镜像,以版本号打个tag在镜像上用来区分不同版本的镜像,还可以将镜像上传到公司的镜像仓库。在部署时可以用更高阶的容器编排工具来实现高可用分布式部署。后面有会慢慢更新这些内容。