Благодаря сообществу, наконец, я смог решить свою проблему.
Согласно комментарию @DavidMaze, моя проблема была связана с поведением команды RUN:
Если сценарий завершается со статусом 1, затем команда RUN завершается неудачно, и Docker не создает изображение с этого шага; контейнерная файловая система потеряна.
По этой причине я не мог видеть никаких файлов журнала в контейнере в случае ошибки в сценарии bash.
Решение
- создайте файл журнала в образе
- , передав его в PID 1, чтобы увидеть содержимое журнала в
docker logs
- bash сценариях, которые необходимо написать регистрируется в этом файле журнала
Таким образом, все, что вы пишете в файл журнала, будет отображаться в docker стандартном выводе.
Мой окончательный файл Docker:
Сценарий
# set the home directory
WORKDIR ${ORACLE_HOME}
# piped logfile into PID 1 in order to see log content in docker logs
RUN touch $ORACLE_HOME/$SCRIPT_FILE.log
RUN ln -sf /proc/1/fd/1 $ORACLE_HOME/$SCRIPT_FILE.log
# execute a script
RUN $ORACLE_HOME/$SCRIPT_FILE.sh $ORACLE_HOME $DOMAIN_NAME $SCRIPT_FILE >$ORACLE_HOME/$SCRIPT_FILE.log 2>&1
bash ($ SCRIPT_FILE. sh):
#!/bin/bash
# define variables
ORACLE_HOME=$1
DOMAIN_NAME=$2
SCRIPT_FILE=$3
DOMAIN_HOME=$ORACLE_HOME/user_projects/domains/$DOMAIN_NAME
echo "Oracle home: "$ORACLE_HOME
echo "Domain home: "$DOMAIN_HOME
echo "Domain name: "$DOMAIN_NAME
echo "Script file: "$SCRIPT_FILE
# validation
PROPERTIES_FILE=$ORACLE_HOME/properties/domain.properties
if [ ! -e "$PROPERTIES_FILE" ]; then
echo "A properties file with the username and password needs to be supplied."
exit 1
fi
...
wlst.sh ... $ORACLE_HOME/$SCRIPT_FILE.py >$ORACLE_HOME/$SCRIPT_FILE.log 2>&1
RETURN_VALUE=$?
if [ $RETURN_VALUE -ne 0 ]; then
echo "Domain creation failed. Return code: $RETURN_VALUE."
exit 1
fi
Вывод в процессе сборки образа выглядит превосходно:
Step 11/11 : RUN $ORACLE_HOME/$SCRIPT_FILE.sh $ORACLE_HOME $DOMAIN_NAME $SCRIPT_FILE >$ORACLE_HOME/$SCRIPT_FILE.log 2>&1
---> Running in 1e7d0d80821e
Oracle home: /u01/oracle
Domain home: /u01/oracle/user_projects/domains/DEV_DOMAIN
Domain name: DEV_DOMAIN
Script file: create-admin-server
Username : weblogic
Password : weblogic12
Creating password file for Administration server...
Creating WebLogic domain...
Initializing WebLogic Scripting Tool (WLST) ...
Welcome to WebLogic Server Administration Scripting Shell
Type help() for help on available commands
domain name : DEV_DOMAIN
domain path : /u01/oracle/user_projects/domains/DEV_DOMAIN
admin server name : AdminServer
admin server port : 7001
machine name : host_1
cluster name : DEV_DOMAIN_CLUSTER
managed server name prefix: managed_server
managed server port : 7011
production mode enabled : true
WebLogic domain has been created successfully
Script completed successfully.
Removing intermediate container 1e7d0d80821e
Successfully built b4f63eb00e62
Successfully tagged <my-image name>:<version>
---> b4f63eb00e62