dockerfile/docker-compose构建镜像上下文目录编写要点
dockerfile上下文目录
举一个dockerfile构建服务模块镜像的例子
目录结构
jar包:/service/auth.jar
dockerfile文件:/service/imagesfile/auth/dockerfile
此时如果编写的dockerfile文件如下:
# 基础镜像
FROM openjdk:8-jre
# author
MAINTAINER project# 挂载目录
VOLUME /home/test
# 创建目录
RUN mkdir -p /home/test
# 指定路径
WORKDIR /home/test
# 复制jar文件到路径
COPY ./auth.jar /home/test/auth.jar
# 启动认证服务
ENTRYPOINT ["java","-jar","auth.jar"]
如果直接使用如下命令:
docker build -t test-auth .
将直接报错,找不到jar文件
正确写法:
假设当前在service目录下
docker build -t test-auth -f /imagesfile/auth/dockerfile .
其中-f后的第一个路径表是dockerfile文件所在的路径
第二个路径表示上下文目录(可以理解为从这个位置开始去找对应的文件,在dockerfile中的COPY ./auth.jar /home/test/auth.jar,其中./auth.jar就表示从宿主机设置的上下文目录开始找auth.jar文件,这个例子中我以'.'为上下文目录且auth.jar文件在service目录下能找到对应的jar包,所以COPY ./auth.jar /home/test/auth.jar命令可以顺利运行)
假设当前在auth目录下,此时写法如下:
docker build -t test-auth01 -f dockerfile ../../
docker-compose文件中的context目录类似与dockerfile构建命令中 -f 的第二个路径(上下问目录)