spa*_*rkr 8 arguments parameter-passing docker
我有一个包含 Scala 和 SBT 的 Dockerfile,如下所示:
# Scala and sbt Dockerfile
# Scala and SBT forked from: https://github.com/hseeberger/scala-sbt
# Adds Docker client installation additionally
# Pull base image
FROM openjdk:$JAVA_VERSION
ARG SCALA_VERSION
ARG SBT_VERSION
# Scala expects this file
RUN touch /usr/lib/jvm/java-$JAVA_VERSION-openjdk-amd64/release
# Install Scala
## Piping curl directly in tar
RUN \
curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
# Install sbt
RUN \
curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb && \
apt-get update && \
apt-get install sbt && \
sbt sbtVersion
Run Code Online (Sandbox Code Playgroud)
现在,如果我想使用它作为我的基础图像,我有以下问题:
每个 Dockerfile 都会生成一个不可变的映像。所以你需要首先构建一个特定的基础镜像,然后构建你自己的FROM它。
您可以采取这种方法:
Dockerfile.base:
# Scala and sbt Dockerfile
# Scala and SBT forked from: https://github.com/hseeberger/scala-sbt
# Adds Docker client installation additionally
# Pull base image
ARG JAVA_VERSION
FROM openjdk:$JAVA_VERSION
ARG SCALA_VERSION
ARG SBT_VERSION
# Scala expects this file
RUN touch /usr/lib/jvm/java-$JAVA_VERSION-openjdk-amd64/release
# Install Scala
## Piping curl directly in tar
RUN \
curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
# Install sbt
RUN \
curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb && \
apt-get update && \
apt-get install sbt && \
sbt sbtVersion
Run Code Online (Sandbox Code Playgroud)
你的孩子 Dockerfile Dockerfile.mine:
ARG JAVA_VERSION
ARG SCALA_VERSION
ARG SBT_VERSION
FROM basejava:java-$JAVA_VERSION-scala-$SCALA_VERSION-sbt-$SBT_VERSION
# Your app stuf here
# ...
# ...
Run Code Online (Sandbox Code Playgroud)
构建示例:
export JAVA_VERSION=latest
export SCALA_VERSION=1.8
export SBT_VERSION=0.13.9
docker build . \
-f Dockerfile.base \
--build-arg JAVA_VERSION=$JAVA_VERSION \
--build-arg SCALA_VERSION=$SCALA_VERSION \
--build-arg SBT_VERSION=$SBT_VERSION \
-t basejava:java-$JAVA_VERSION-scala-$SCALA_VERSION-sbt-$SBT_VERSION
docker build . \
-f Dockerfile.mine \
--build-arg JAVA_VERSION=latest \
--build-arg SCALA_VERSION=1.8 \
--build-arg SBT_VERSION=0.13.9
-t myjava:java-$JAVA_VERSION-scala-$SCALA_VERSION-sbt-$SBT_VERSION
Run Code Online (Sandbox Code Playgroud)
方法2,ONBUILD,zigarn提到的。
Dockerfile.base:
# Scala and sbt Dockerfile
# Scala and SBT forked from: https://github.com/hseeberger/scala-sbt
# Adds Docker client installation additionally
# Pull base image
ONBUILD ARG JAVA_VERSION
FROM openjdk:$JAVA_VERSION
ONBUILD ARG SCALA_VERSION
ONBUILD ARG SBT_VERSION
# Scala expects this file
ONBUILD RUN touch /usr/lib/jvm/java-$JAVA_VERSION-openjdk-amd64/release
# Install Scala
## Piping curl directly in tar
ONBUILD RUN \
curl -fsL http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz | tar xfz - -C /root/ && \
echo >> /root/.bashrc && \
echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc
# Install sbt
ONBUILD RUN \
curl -L -o sbt-$SBT_VERSION.deb http://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
dpkg -i sbt-$SBT_VERSION.deb && \
rm sbt-$SBT_VERSION.deb && \
apt-get update && \
apt-get install sbt && \
sbt sbtVersion
Run Code Online (Sandbox Code Playgroud)
你的孩子Dockerfile.mine
FROM basejava
# Base ONLBUILD instructions are automatically inserted here.
# Your app stuf here
# ...
# ...
Run Code Online (Sandbox Code Playgroud)
建造:
docker build . -f Dockerfile.base -t basejava
export JAVA_VERSION=latest
export SCALA_VERSION=1.8
export SBT_VERSION=0.13.9
docker build . \
-f Dockerfile.mine \
--build-arg JAVA_VERSION=$JAVA_VERSION \
--build-arg SCALA_VERSION=$SCALA_VERSION \
--build-arg SBT_VERSION=$SBT_VERSION \
-t myjava:java-$JAVA_VERSION-scala-$SCALA_VERSION-sbt-$SBT_VERSION
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10893 次 |
| 最近记录: |