繁体   English   中英

将项目目录设置为Dockerfile中Entrypoint的Workdir

[英]Set project directory as Workdir for Entrypoint in Dockerfile

我已经通过Spark安装定义了一个Dockerfile。 我想从定义为入口点的bash脚本加载应用程序。 但是,此脚本应使用参数来实现。 该脚本位于项目文件夹中。 问题是如何在将项目目录定义为workdir的情况下将此脚本设置为入口点?

我的Dockerfile现在看起来像这样:

    FROM java:8

    ENV SCALA_VERSION 2.11.8
    ENV SBT_VERSION 1.1.1
    ENV SPARK_VERSION 2.2.0
    ENV SPARK_DIST spark-$SPARK_VERSION-bin-hadoop2.6
    ENV SPARK_ARCH $SPARK_DIST.tgz
    ARG SPARK_MASTER

    WORKDIR /opt

    # Install Scala
    RUN \
      cd /root && \
      curl -o scala-$SCALA_VERSION.tgz http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz && \
      tar -xf scala-$SCALA_VERSION.tgz && \
      rm scala-$SCALA_VERSION.tgz && \
      echo >> /root/.bashrc && \
      echo 'export PATH=~/scala-$SCALA_VERSION/bin:$PATH' >> /root/.bashrc

    # Install SBT
    RUN \
      curl -L -o sbt-$SBT_VERSION.deb https://dl.bintray.com/sbt/debian/sbt-$SBT_VERSION.deb && \
      dpkg -i sbt-$SBT_VERSION.deb && \
      rm sbt-$SBT_VERSION.deb


    # Install Spark
    RUN \
        cd /opt && \
        curl -o $SPARK_ARCH http://d3kbcqa49mib13.cloudfront.net/$SPARK_ARCH && \
        tar xvfz $SPARK_ARCH && \
        rm $SPARK_ARCH && \
        echo 'export PATH=$SPARK_DIST/bin:$PATH' >> /root/.bashrc


    EXPOSE 9851 9852 4040 9092 9200 9300 5601 7474 7687 7473

    VOLUME /home/user/path/to/project /Demo

    WORKDIR /Demo

    ENTRYPOINT runDemo.sh $SPARK_MASTER

假设当前目录为/Demo并且runDemo.sh在该文件夹内,则入口点应如下所示:

ENTRYPOINT ./runDemo.sh $SPARK_MASTER

注意. 这意味着当前目录。

这与docker无关,这只是执行Linux / Unix中$PATH中没有的程序/脚本的标准方式。

如评论中所述,您可以执行以下操作:

...
EXPOSE 9851 9852 4040 9092 9200 9300 5601 7474 7687 7473

VOLUME /home/user/path/to/project /Demo

WORKDIR /Demo

ENTRYPOINT runDemo.sh $SPARK_MASTER

这将在容器的/Demo安装本地/home/user/path/to/project文件夹,然后将/Demo/runDemo.sh $SPARK_MASTER设置为入口点。

请注意,如果脚本是独立的(即项目主目录中没有外部依赖项),则可以使用COPY将脚本仅添加到容器中,而无需装载整个卷。

...
EXPOSE 9851 9852 4040 9092 9200 9300 5601 7474 7687 7473

COPY /home/user/path/to/project/runDemo.sh /Demo

WORKDIR /Demo

ENTRYPOINT runDemo.sh $SPARK_MASTER

这是Dockerfile指令的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM