Dockerfile编写

近期部署工作比较多,对docker和docker-compose都有了更深入的了解,已经可以熟练使用了。这里记录一下自己写的相关脚本,加深印象。

前端

# docker build 当前目录 tag为bd-ui 使用配置文件Dockerfile.prod
docker build . -t bd-ui -f Dockerfile.prod

Dockerfile.prod

由于公司内部npm仓库不稳定,为了提升效率,在这里是先本地执行build再docker build,直接把编译后的dist放入容器。实际上也可以选择先在一个容器内build,再复制。这种方式可以参考下边的后端Dockerfile.prod

# 注意:!!! 
# 注意:!!! 
# 注意:!!! 
# 这里为了提升打包速度
# 直接在本地打包(yarn && yarn build)
# 然后执行docker build,把dist目录拷进去

# 使用nginx镜像
FROM nginx:1.17.6
# 设定工作目录
WORKDIR /usr/src/app/
# 把项目中的nginx.prod.conf 复制到容器内的配置目录
COPY ./nginx.prod.conf /etc/nginx/nginx.conf
# 把项目打包后的dist目录下的结果,复制到nginx的html目录
COPY ./dist /usr/share/nginx/html/

后端

# docker build 当前目录 tag为bd-ui 使用配置文件Dockerfile.prod
docker build . -t bd-api -f Dockerfile.prod

Dockerfile.prod

# 使用node镜像,命名为boss-api-build-images,下边使用
FROM node:12.19.0 as boss-api-build-images
# 指定容器内工作目录
WORKDIR /opt/node_app
# 将Dockerfile.prod所在目录(即项目目录)下的所有文件拷贝到工作目录
COPY . .
# 安装依赖 && 混淆
RUN yarn --ignore-optional && yarn uglify

# 生成最终镜像
FROM node:12.19.0
# 指定工作目录
WORKDIR /opt/node_app
# 复制上边的boss-api-build-images中混淆的结果到当前镜像
# 这样镜像中就没有源码了,并且被混淆之后也不可读了,更安全
COPY --from=boss-api-build-images /opt/node_app .
# 前端打包结果是直接放在nginx上即可,后端还需要跑起来
# 比如先跑migrations插入默认数据,然后指定环境变量并yarn start
CMD MIGRATION_ENV=prod yarn migrations up && EGG_SERVER_ENV=prod NODE_ENV=prod yarn start

常用命令总结

# 设置服务器开机自启动docker
systemctl enable docker
# 启动docker
systemctl start docker

# 打包镜像
docker build . -t bd-api -f Dockerfile.prod
# 导出镜像tar包
docker save bd-api > bd-api.tar   
# scp传输到服务器
scp -P 8008 $PWD/bd-api.tar root@1.1.1.1:/root/dockerImages/
# 导入镜像tar包
docker load < ./bd-api.tar

# 压缩再传输比较快
# 解压:
unzip  bd-api.tar.zip
压缩:
zip bd-api.tar.zip ./bd-api.tar

# 网络不稳定怎么办?
# 可以用rsync的方式上传,支持断点续传
rsync -avPz bd-api.tar root@1.1.1.1:/root/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值