docker-entrypoint.sh: только exec "$ @" не работает - PullRequest
0 голосов
/ 08 октября 2019

Я пытался решить эту проблему за пару дней.

Файл 1: docker-entrypoint.sh

#!/bin/bash
set -e
source /home/${HADOOP_INSTALL_USERNAME}/.bashrc
kinit -kt /home/${HADOOP_INSTALL_USERNAME}/keytab/dept-test-hadoop.${HADOOP_INSTALL_ENV}.keytab dept-test-hadoop
mkdir /tmp/test222222
exec "$@"

Dockerfile:

ENTRYPOINT ["/home/dept-test-hadoop/docker-entrypoint.sh"]

Команда запуска Docker:

docker run -it hadoop-hive:v1 /bin/mkdir /tmp/test1

Задача илия пытаюсь выполнить какую-либо команду, которая передается в качестве аргумента командной строки команде docker run. Обратите внимание, что для этих команд требуется аутентификация kerberos

1) Я заметил /tmp/test222222, но не смог увидетьпрямо как /tmp/test1 с приведенной выше командой запуска docker. Я думаю, что мой exec "$@" в docker-entrypoint.sh не выполняется. Но я могу подтвердить, что скрипт выполняется, поскольку я вижу /tmp/test222222

2) Есть ли способ, которым мы можем присвоить значения из переменных среды?

ENTRYPOINT ["/home/dept-test-hadoop/docker-entrypoint.sh"]

1 Ответ

2 голосов
/ 08 октября 2019

Ваш контейнер будет выходить, пока он создает каталог. Жизнь вашего контейнера - это жизнь команды exec или точки входа docker, поэтому ваш контейнер умрет вскоре после exec "$@".

Если вы ищете способ создать каталог из env, тогда вы можете попробоватьэто

#!/bin/bash
set -x
source /home/${HADOOP_INSTALL_USERNAME}/.bashrc
kinit -kt /home/${HADOOP_INSTALL_USERNAME}/keytab/dept-test-hadoop.${HADOOP_INSTALL_ENV}.keytab dept-test-hadoop
mkdir $MY_DIR
ls
exec "$@"

, поэтому теперь передайте MY_DIR в env, но помните о длительном процессе.

docker run -it -e MY_DIR=abcd hadoop-hive:v1  "your_long_running_process_to_exec"

например

docker run -it -e MY_DIR=abcd hadoop-hive:v1 "<hadoop command>"

Если вы запуститепроцесс из ENV в exec, то вы также можете попробовать

#!/bin/sh
set -x
mkdir $MY_DIR
ls
exec ${START_PROCESS}

, чтобы вы могли пройти во время выполнения

docker run -it -e MY_DIR=abcd -e START_PROCESS=my_process hadoop-hive:v1  
...