Образ Docker создается, но не запускается
Я пытаюсь создать сборку Docker для libreplan, используя инструкции по установке здесь. Докер-файл
FROM tomcat:6
RUN apt-get -yq update && apt-get -yq install \
cutycapt \
patch \
postgresql-client \
libpg-java \
xvfb
# Prepare webapp location
RUN mkdir -p /usr/local/tomcat/webapps/libreplan
# Get WAR file
RUN wget -q -O /usr/local/tomcat/webapps/libreplan/libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.3.0.war
# Install libreplan.xml
ADD libreplan.xml /usr/local/tomcat/webapps/libreplan/libreplan.xml
# Patch the policy to include libreplan
ADD catalina.policy.patch catalina.policy.patch
RUN patch -o /usr/local/tomcat/conf/catalina.policy /usr/local/tomcat/conf/catalina.policy catalina.policy.patch
CMD ["catalina.sh", "run"]
Сборка работает, но ничего не делает, когда я пытаюсь ее запустить. Весь код находится на github, и я настроил автоматическую сборку в реестре Docker. В репозиторий включен пример docker-compose.yml, который должен работать, но когда я пытаюсь это сделать, вывод из контейнера libreplan не отображается, и я не могу получить к нему доступ через браузер. Я совсем не знаю tomcat, так что, возможно, я что-то не так сделал, но я не знаю, как вообще понять, что именно. Есть ли что-то очевидное, что я пропустил?
2 ответа
Если я запускаю ваше изображение:
$ docker run --name libreplan aquavitae/libreplan
Я получил:
May 28, 2015 4:57:42 PM org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
May 28, 2015 4:57:42 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
May 28, 2015 4:57:42 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 387 ms
May 28, 2015 4:57:42 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
May 28, 2015 4:57:42 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.44
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory host-manager
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory manager
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory examples
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory libreplan
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory ROOT
May 28, 2015 4:57:42 PM org.apache.catalina.startup.HostConfig deployDirectory
INFO: Deploying web application directory docs
May 28, 2015 4:57:42 PM org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
May 28, 2015 4:57:42 PM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
May 28, 2015 4:57:42 PM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/12 config=null
May 28, 2015 4:57:42 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 580 ms
Что кажется вполне успешным. Кроме того, я могу получить IP-адрес контейнера:
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' libreplan
172.17.0.9
И открыть, что в браузере:
$ firefox http://172.17.0.9:8080
И посмотрите веб-страницу Tomcat по умолчанию.
Так что в основном это похоже на работу.
я тоже могу docker up
вещи без ошибок, хотя я заменил build: .
линия с image: aquavitae/libreplan
потому что я не был достаточно терпелив, чтобы попробовать построить.
Хорошо, в этой ситуации вы должны устранить неполадки, запустив оболочку в контейнере и запустив процесс вручную. Если повезет docker logs containername
Возможно, у вас будет достаточно информации, чтобы понять, что не так, но обычно мне приходится вставать в контейнер следующим образом:
docker run --interactive --tty --link db:db <containerid> bash
Попав внутрь, вы захотите запустить CMD напрямую.
catalina.sh run
Глядя на ваш файл, моя первая мысль будет catalina.sh
отсутствует в вашем PATH или не является исполняемым. Так что вы бы исправить это, запустив /bin/sh /full/path/to/catalina.sh run
или корректируя переменную среды PATH и / или используя директиву WORKDIR в вашем Dockerfile.