Dockerfile для кота

Мне нужно создать образ с деталями установки tomcat. Я пробовал много файлов docker в сети и пытался собрать, но безуспешно. Может ли кто-нибудь сказать мне, какие команды должны быть в файле docker для успешной установки tomcat? Мне не нужен официальный образ tomcat .Заранее спасибо.


person user2451997    schedule 31.12.2014    source источник
comment
Взгляните на эти файлы Docker.   -  person joh.scheuer    schedule 31.12.2014
comment
Вы также можете использовать их в качестве отправной точки: github.com/docker-library/tomcat   -  person guido.rota    schedule 31.12.2014


Ответы (2)


Вот что я сделал, чтобы решить эту проблему:

Файл Docker

FROM tomcat

MAINTAINER richard

RUN apt-get update && apt-get -y upgrade

WORKDIR /usr/local/tomcat

COPY tomcat-users.xml /usr/local/tomcat/conf/tomcat-users.xml
COPY context.xml /usr/local/tomcat/webapps/manager/META-INF/context.xml

EXPOSE 8080

Я копирую эти два файла, чтобы получить доступ к приложению-менеджеру извне. Если вы тоже этого хотите, добавьте следующее в свой контекст и файлы пользователей tomcat

Context.xml

<Context antiResourceLocking="false" privileged="true" >
    <!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->
    <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

tomcat-users.xml

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
  <user username="admin" password="secret" roles="manager-gui"/>
</tomcat-users>

Затем вы можете собрать его и запустить:

docker build -t name/tomcat .
docker run -d -p 8080:8080 --name some_name name/tomcat

Разверните приложение следующим образом:

docker cp some/app.war some_name:/usr/local/tomcat/webapps/app.war
person Richard    schedule 24.08.2017
comment
это работает, кроме развертывания. Файл войны не развертывается в tomcat. - person CrazyProgrammer; 29.12.2018

Существует несколько доступных вариантов использования Tomcat в Docker. Например. есть официальные версии, которые вы можете найти на https://registry.hub.docker.com/_/tomcat/

Но если вы хотите создать файл с нуля, вам может помочь следующее:

FROM ubuntu:14.04
RUN apt-get update && apt-get -y upgrade

RUN apt-get -y install software-properties-common
RUN add-apt-repository ppa:webupd8team/java
RUN apt-get -y update

# Accept the license
RUN echo "oracle-java7-installer shared/accepted-oracle-license-v1-1 boolean true" | debconf-set-selections

RUN apt-get -y install oracle-java7-installer

# Here comes the tomcat installation
RUN apt-get -y install tomcat7
RUN echo "JAVA_HOME=/usr/lib/jvm/java-7-oracle" >> /etc/default/tomcat7

# Expose the default tomcat port
EXPOSE 8080

# Start the tomcat (and leave it hanging)
CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out

Чтобы создать образ, просто используйте docker build. :

docker build -t my/tomcat .

Чтобы запустить контейнер, вы должны смонтировать том с вашим war-файлом.

docker run -v /somefolder/myapp:/var/lib/tomcat7/webapps/myapp -p 8080:8080 my/tomcat

Тогда все должно быть готово!

person wassgren    schedule 01.01.2015
comment
он говорит, что запуск tomcat не удался - person user2451997; 05.01.2015
comment
Это также не удалось для меня. Я хотел бы получить информацию о том, как просматривать журналы и т. д., а также о том, можно ли это запустить. - person Jeff; 22.02.2016
comment
для отладки: попробуйте войти в контейнер по ssh, не запуская tomcat: [docker run -v /somefolder/myapp:/var/lib/tomcat7/webapps/myapp -p 8080:8080 -it my/tomcat bash] в приведенной выше команде , убедитесь, что папка вашего приложения указана правильно -v /somefolder/myapp:/var/lib/tomcat7/webapps/myapp, затем попробуйте запустить службу tomcat и посмотреть, что происходит.... - person srikanth Nutigattu; 05.05.2016
comment
Это отлично сработало для меня в Ubuntu 16.04 и очень помогло мне понять, почему сервисы — плохая идея в контейнере. Строка для получения ppa для Java 1.8 была огромной помощью, но самая важная строка выше: CMD service tomcat7 start && tail -f /var/lib/tomcat7/logs/catalina.out, потому что она оставляет службу запущенной. Мне пришлось добавить флаги -d и --cap-add SYS_PTRACE в команду запуска. - person Ted Cahall; 11.03.2018