Я создаю Dockerfile для установки и запуска служб WebLogic 12c, используя сценарии запуска при команде «docker run».Я передаю сценарий оболочки в инструкции CMD, которая выполняет сценарии startWeblogic.sh и startNodeManager.sh.Но когда я вошел в контейнер, он запустил только первый скрипт startWeblogic.sh и даже не запустил второй скрипт, что очевидно из журналов докера.
Тот же скрипт выполняется внутри контейнера вручную и запускает обе службы.Какова правильная инструкция для запуска сценария для запуска нескольких процессов в контейнере, а не для выхода из контейнера?
Чего мне не хватает в этом сценарии и в файле Docker?Я знаю, что контейнер может запускать только один процесс, но по-грязному, как запустить несколько служб для приложения, такого как WebLogic, которое имеет сервер имен, менеджер узлов, управляемый сервер и создание управляемых доменов и машин.Управляемый сервер может быть запущен только во время работы сервера имен WebLogic.
Скрипт: startcript.sh
#!/bin/bash
# Start the first process
/u01/app/oracle/product/wls122100/domains/verdomain/bin/startWebLogic.sh -D
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start my_first_process: $status"
exit $status
fi
# Start the second process
/u01/app/oracle/product/wls122100/domains/verdomain/bin/startNodeManager.sh -D
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start my_second_process: $status"
exit $status
fi
while sleep 60; do
ps aux |grep "Name=adminserver" |grep -q -v grep
PROCESS_1_STATUS=$?
ps aux |grep node |grep -q -v grep
PROCESS_2_STATUS=$?
# If the greps above find anything, they exit with 0 status
# If they are not both 0, then something is wrong
if [ $PROCESS_1_STATUS -ne 0 -o $PROCESS_2_STATUS -ne 0 ]; then
echo "One of the processes has already exited."
exit 1
fi
done
Усеченный файл docker.
RUN unzip $WLS_PKG
RUN $JAVA_HOME/bin/java -Xmx1024m -jar /u01/app/oracle/$WLS_JAR -silent -responseFile /u01/app/oracle/wls.rsp -invPtrLoc /u01/app/oracle/oraInst.loc > install.log
RUN rm -f $WLS_PKG
RUN . $WLS_HOME/server/bin/setWLSEnv.sh && java weblogic.version
RUN java weblogic.WLST -skipWLSModuleScanning create_basedomain.py
WORKDIR /u01/app/oracle
CMD ./startscript.sh
Команды сборки и запуска docker:
docker build -f Dockerfile-weblogic --tag="weblogic12c:startweb" /var/dprojects
docker rund -d -it weblogic12c:startweb
docker exec -it 6313c4caccd3 bash