Файл Docker: я хочу вызвать один скрипт из файла Docker - PullRequest
0 голосов
/ 14 мая 2018

Я создаю одно имя образа докера с помощью soaphonda. код файла Docker ниже

    FROM centos:7
     FROM python:2.7
     FROM java:openjdk-7-jdk
 MAINTAINER Daniel Davison <sircapsalot@gmail.com>

#  Version
ENV   SOAPUI_VERSION  5.3.0

COPY entry_point.sh /opt/bin/entry_point.sh
COPY server.py /opt/bin/server.py
COPY server_index.html /opt/bin/server_index.html
COPY SoapUI-5.3.0.tar.gz /opt/SoapUI-5.3.0.tar.gz

   COPY exit.sh /opt/bin/exit.sh

   RUN chmod +x /opt/bin/entry_point.sh
  RUN chmod +x /opt/bin/server.py

 # Download and unarchive SoapUI
 RUN mkdir -p /opt 
 WORKDIR /opt
  RUN tar -xvf SoapUI-5.3.0.tar.gz .

  # Set working directory
  WORKDIR /opt/bin

   # Set environment
      ENV PATH ${PATH}:/opt/SoapUI-5.3.0/bin


     EXPOSE 3000

      RUN chmod +x /opt/SoapUI-5.3.0/bin/mockservicerunner.sh
     CMD ["/opt/bin/entry_point.sh","exit","pwd", "sh", "/Users/ankitsrivastava/Documents/SametimeFileTransfers/Honda/files/hondascript.sh"]

Создание моего изображения прошло успешно. Я хочу, чтобы после создания образа он снова пометил и вставил док-концентратор. Для этого я создал скрипт, приведенный ниже;

   docker tag soaphonda ankiksri/soaphonda
    docker push ankiksri/soaphonda
    docker login
 docker run -d -p 8089:8089 --name demo ankiksri/soaphonda
  containerid=`docker ps -aqf "name=demo"`
   echo $containerid
    docker exec -it $containerid bash -c 'cd ../SoapUI-5.3.0;sh /opt/SoapUI-5.3.0/bin/mockservicerunner.sh "/opt/SoapUI-5.3.0/Honda-soapui-project.xml"'

Пожалуйста, помогите мне, как я могу вызвать второй скрипт из файла Docker, а команда выхода не работает в файле Docker.

1 Ответ

0 голосов
/ 14 мая 2018

Здесь вы должны понять, что в Dockerfile вы указываете команды, которые выполняются при сборке и запуске контейнера Docker из образа, созданного вами с помощью ваш Dockerfile.

Итак, тэг образа Docker, push-запуск должен выполняться после того, как вы построили образ Docker из Dockerfile. Это не может быть сделано в самом Dockerfile.

Чтобы достичь такого, вам нужно использовать инструмент сборки, такой как Maven (пример), и автоматизировать процесс тегирования, выдвигая изображение. Также, глядя на ваше изображение, я не вижу никакой необходимости продолжать помечать и нажимать на изображение, если вы не обновляете его постоянно. Также нет смысла использовать три команды FROM, так как это излишне увеличит размер вашего образа Docker.

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