Настройка Tomcat вручную - Docker

tomcat docker

296 просмотра

1 ответ

607 Репутация автора

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

     Using aws EC2 Centos micro instance for learning docker
     Docker daemon is up and running
     Docker usergroup has also been setup and I run docker as normal user
     Installed oracle JDK as below:
               wget --no-cookies --no-check-certificate --header "Cookie:\
               gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; \
               oraclelicense=accept-securebackup-cookie" \
               http://download.oracle.com/otn-pub/java/jdk/8u91-b14/jdk-8u91-linux-x64.rpm'
     Installed tomcat using yum ( Have tried manual method using the gz file also but did not help ):
               yum install tomcat.noarch tomcat-admin-webapps.noarch tomcat-webapps.noarch
     Edited "/etc/tomcat/tomcat.conf" to add /usr/java/latest as JAVA_HOME
     Committed the changes to container:
               docker commit 42b0beb497f9 $USER/tomcat_install
      docker run -d -p 8080:8080 $USER/tomcat_install /usr/sbin/tomcat start -D FOREGROUND
               Output: SHA Checksum

Но контейнер выходит, выдавая ошибку ниже:

      `enter code here /usr/sbin/tomcat: line 21: .: /etc/sysconfig/: is a directory`

После соответствующих поисков я обнаружил, что эти ошибки происходят из-за использования открытого jdk вместо oracle jdk. Как и выше, я начал использовать оракул JDK.

Обратите внимание: поскольку я учусь, я не хочу загружать официальное изображение tomcat и использовать его, поскольку это делает его слишком простым. Хотя для сравнения я загрузил это изображение, но все еще не смог решить проблему. Некоторые предложения, чтобы решить эту проблему и иметь мой собственный образ кота, были бы удивительными

Автор: f-z-N Источник Размещён: 19.07.2016 05:13

Ответы (1)


1 плюс

11 Репутация автора

Я столкнулся с той же проблемой сегодня. Вот что я нашел: если вы посмотрите на / usr / sbin / tomcat, вы увидите, что ему нужно $ NAME = "tomcat" в строке 21

# Get instance specific config file
if [ -r "/etc/sysconfig/${NAME}" ]; then
    . /etc/sysconfig/${NAME}
fi

который требуется для загрузки / etc / sysconfig / tomcat. Ему также нужно $ CATALINA_BASE = "/ usr / share / tomcat" в инструкции, начинающейся со строки 39

    if [ "$1" = "start" ]; then
      ${JAVACMD} $JAVA_OPTS $CATALINA_OPTS \
        -classpath "$CLASSPATH" \
        -Dcatalina.base="$CATALINA_BASE" \
        -Dcatalina.home="$CATALINA_HOME" \
        -Djava.endorsed.dirs="$JAVA_ENDORSED_DIRS" \
        -Djava.io.tmpdir="$CATALINA_TMPDIR" \
        -Djava.util.logging.config.file="${CATALINA_BASE}/conf/logging.properties" \
        -Djava.util.logging.manager="org.apache.juli.ClassLoaderLogManager" \
        org.apache.catalina.startup.Bootstrap start \
        >> ${CATALINA_BASE}/logs/catalina.out 2>&1 &
        if [ ! -z "$CATALINA_PID" ]; then
          echo $! > $CATALINA_PID
        fi

Так что он может знать, куда писать файл журнала catalina.out. Итак, что я сделал, так это определил две переменные (это легко сделать в вашем Dockerfile)

NAME="tomcat"
CATALINA_BASE="/usr/share/tomcat"

в /etc/tomcat/tomcat.conf и мне удалось вручную запустить tomcat

[root@tomcat tomcat]# ps -ef|grep tomcat
root       352     1  8 13:09 ?        00:00:01 /usr/lib/jvm/jre/bin/java -classpath /usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar -Dcatalina.base=/usr/share/tomcat -Dcatalina.home=/usr/share/tomcat -Djava.endorsed.dirs= -Djava.io.tmpdir=/var/cache/tomcat/temp -Djava.util.logging.config.file=/usr/share/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager org.apache.catalina.startup.Bootstrap start
root       372     1  0 13:09 ?        00:00:00 grep --color=auto tomcat
[root@tomcat tomcat]#

Это правильный путь? Я не знаю, но это работает.

Я разместил более длинную версию этого ответа на http://unixwars.blogspot.com/2016/07/starting-tomcat-manually-in-docker.html, если вам интересно. Тем не менее, я надеюсь, что в этом ответе достаточно.

Автор: raubvogel Размещён: 27.07.2016 01:20
Вопросы из категории :
32x32