如何构建与基本图像具有相同标记的泊坞窗图像?

时间:2017-09-06 08:12:53

标签: docker dockerfile

我有一个案例,我希望从一些基础图像创建一个泊坞窗图像,在此过程中进行一些修改(就像你一样),我正在寻找一些方法来保留基本图像标记。

让我举一个例子。

我想用这个Dockerfile构建一个新的logstash映像:

FROM docker.elastic.co/logstash/logstash:5.5.2
RUN /opt/logstash/bin/logstash-plugin install logstash-input-jdbc
RUN mkdir /opt/logstash/vendor/jdbc
RUN curl -Lo /opt/logstash/vendor/jdbc/postgresql-42.1.1.jar https://jdbc.postgresql.org/download/postgresql-42.1.1.jar

我希望生成的图片也会以标记5.5.2结束,就像原始基本图像一样。

我知道我可以在构建完成后从命令行标记它,但我正在寻找某种方式(如果存在):

  • 从Dockerfile“提取”此标记,因此我可以在docker build -t选项中使用它
  • 将一些变量传递到可用于代替5.5.2图像标记
  • 的Dockerfile中

感谢您的帮助&想法!

1 个答案:

答案 0 :(得分:2)

您需要在docker文件中使用构建参数

ARG LOGSTASH_VERSION
FROM docker.elastic.co/logstash/logstash:${LOGSTASH_VERSION}
RUN /opt/logstash/bin/logstash-plugin install logstash-input-jdbc
RUN mkdir /opt/logstash/vendor/jdbc
RUN curl -Lo /opt/logstash/vendor/jdbc/postgresql-42.1.1.jar https://jdbc.postgresql.org/download/postgresql-42.1.1.jar

然后使用docker build命令行传递值

docker build --build-arg LOGSTASH_VERSION=5.5.2 .....