Установить каталог проекта как Workdir для Entrypoint в Dockerfile - PullRequest
0 голосов
/ 01 июня 2018

Я определил Dockerfile с установкой Spark.И я хотел бы загрузить свое приложение из сценария 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

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Как уже упоминалось в комментариях, вы можете сделать что-то подобное:

...
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

Это смонтирует вашу локальную папку /home/user/path/to/project в /Demo контейнера, а затем установит /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 .

0 голосов
/ 01 июня 2018

Учитывая, что текущий каталог будет /Demo, а runDemo.sh находится внутри этой папки, ваша точка входа должна выглядеть следующим образом:

ENTRYPOINT ./runDemo.sh $SPARK_MASTER

Обратите внимание, . это означает текущий каталог.

Это не имеет ничего общего с докером, это просто стандартный способ выполнения программ / сценариев, которых нет в $PATH в Linux / Unix.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...