运维-Dockerfile的书写

最近公司进行dockerFile的云部署应用,我来主要负责学习dockerfile的书写,并且对商城微服务的进行适配Dockerfile的书写

构建命令
docker build -f aaa -t test ./

运行命令 refund 为 images
docker run -i -t refund /bin/bash


FROM java:1.7

MAINTAINER SystemPlatform@replaceServName

ARG HostIp

ENV ServerPrivateIP=${HostIp:-0.0.0.0} \

JDK_VERSION=1.7 \

ServName=replaceServName \
ServPath=/var/www/javaApplication/
RUN yum install tar -y && mkdir -pv $ServPath
COPY . /tmp
WORKDIR /tmp
RUN mvn -f ./pom.xml install -e -Dmaven.test.skip=true && \
tar xvf /tmp/target/$ServName*.tar.gz -C $ServPath && \
rm -rf /tmp/* && chmod a+x $ServPath/$ServName/shell/*.sh
WORKDIR $ServPath/$ServName/shell/
ENTRYPOINT ["./start.sh"]

以上为单个服务的镜像build通用脚本。

但是在实际情况中我们发现,我们的服务有部分的是有依赖关系的,例如有些查询查询订单信息的服务,没有直接调用订单服务的接口,而是直接引用订单服务的jar包,然后进行构建的。

根据maven本次仓库的特性,因为订单服务更新也是比较频繁的,所以如果每次打包都将最新的订单服务的jar包传送到Nexus私服上面,会使得构建变得很繁重,利用maven本次仓库的特性,每次构建order-serv都会将最新的jar包更新到maven的本地仓库中,所以每次构建需要引用订单服务的的服务的时候我们先进行构建订单服务,这样保证了每次这些服务引用的都是最新的jar包。

FROM java:1.7

MAINTAINER SystemPlatform@order-downup-serv

ARG HostIp

ENV ServerPrivateIP=${HostIp:-0.0.0.0} \

JDK_VERSION=1.7 \

ServName=order-downup-serv \
ServPath=/var/www/javaApplication/
RUN yum install tar -y && mkdir -pv $ServPath
COPY . /tmp
WORKDIR /tmp
RUN mvn -f /tmp/vendor/order_serv/pom.xml install -e -Dmaven.test.skip=true && \  (进行先构建订单服务,更新本地仓库的jar包,然后再进行本服务的打包)
mvn -f ./pom.xml install -e -Dmaven.test.skip=true &&\
tar xvf /tmp/target/$ServName*.tar.gz -C $ServPath && \
rm -rf /tmp/* && chmod a+x $ServPath/$ServName/shell/*.sh
WORKDIR $ServPath/$ServName/shell/
ENTRYPOINT ["./start.sh"]
(以上内容很多写在一行的意思是,每次dockerFile build的时候有缓存,如果内容没有改变就会进行读取缓存,尽量写在一行的意思是尽量少的构建太多缓存镜像)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值