Docker выйти без выдачи ошибки или выполнения кода - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь запустить задание talend внутри docker, сборка идет нормально, но когда я запускаю контейнер, он просто завершается без ошибок. Вот мой файл докеров:

FROM store/oracle/serverjre:8

ARG talend_job=export_data_xml

ENV TALEND_JOB ${talend_job}
ENV ARGS ""

WORKDIR /opt/talend

COPY  . /opt/talend

### Install Talend Job
RUN yum install -y unzip && \
    unzip ${TALEND_JOB}.zip && \
    rm -rf ${TALEND_JOB}.zip && \
    chmod +x ${TALEND_JOB}/${TALEND_JOB}_run.sh

VOLUME /data

CMD ["/bin/sh","-c","${TALEND_JOB}/${TALEND_JOB}_run.sh ${ARGS}"]

Выполнить команду:

docker run -it demo:latest

Он не выполняет код и не выдает ошибку. Есть идеи, что может быть не так или как хотя бы отладить?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Некоторые вещи, которые стоит попробовать:

Добавьте несколько выражений echo после каждой команды, например:

RUN echo "About to install unzip..." && yum install -y unzip && echo "unzip installed" \ 
...

Если здесь не удается выполнить команду, вы должны хотя бы увидеть операторы echo.

Ниже, похоже, что вы устанавливаете pwd на /opt/talend, а затем выполняете КОПИРОВАНИЕ всего, что находится в pwd, в тот же каталог ... фактически нулевую операцию.

WORKDIR /opt/talend

COPY  . /opt/talend

В этой последней строке обязательно передайте аргументы строки как отдельные строки. Недавно я работал над чем-то, и две строки, которые я передал как "command, input", считались одной строкой, а не двумя отдельными строками (что я действительно хотел):

CMD ["/bin/sh","-c","${TALEND_JOB}/${TALEND_JOB}_run.sh ${ARGS}"]

You также можно войти в контейнер docker, чтобы попытаться отладить его после его запуска, используя:

docker exec -it [imageId] sh

Внутри контейнера вы можете запускать различные команды, чтобы убедиться, что все так, как вы ожидаете.

HTH

0 голосов
/ 26 мая 2020

Думаю, это проблема с путями к файлам. Вы можете отладить его, запустив свое изображение с помощью:

docker run -ti demo:latest /bin/sh

Чтобы go внутри контейнера, проверьте, находится ли export_data_xml_run.sh на правильном пути (/opt/talend/export_data_xml), и попробуйте запустить его из формы там

...