2015-11-06 5 views
2

Я пытался создать веб-приложение JAVA с помощью Docker. Я делал контейнер докера для развертывания и запуска приложения. Я новичок. Поэтому я начал с небольшого POC для java-приложения (jar), который работал нормально. Я сделал некоторые изменения для веба-приложений JAVA (войны) и создал Dockerfile для проекта, который заключается в следующем:Как создать контейнер Docker для веб-приложения JAVA

Dockerfile 
    --------------------------------------------------- 
    FROM java:8 

    RUN apt-get update 
    RUN apt-get install -y maven 

    WORKDIR /code 
    ADD pom.xml /code/pom.xml 
    ADD src/main/webapp/WEB-INF/web.xml /codes/rc/main/webapp/WEB-INF/web.xml 
    RUN ["mvn", "dependency:resolve"] 

    ADD src /code/src 
    RUN ["mvn", "package"] 
    CMD ["usr/lib/jvm/java-8-openjdk-amd64/bin/java", "-war", "target/techpoint.war"] 
    ---------------------------------------------------- 

Сложение было успешным, но при запуске приложения - это говорит «Непризнанный вариант: -war Ошибка: не удалось создать виртуальную машину Java Ошибка: произошло фатальное исключение. Программа выйдет из режима « И когда я заменил« -war »на« -jar »- он говорит « нет основного атрибута манифеста в целевой /myapp.war "

Может ли кто-нибудь сказать мне, как я могу сделать JAVA-приложение для веб-приложений (war) совместимым wi й процесс развертывания Docker. Это означает, что должен быть фактический файл Docker (с командами), чтобы сделать возможным создание и запуск приложения?

+1

Вы не можете просто запустить .war webapp. Вы можете установить его на сервер, как tomcat. См. [Link] (http://trimc-devops.blogspot.com/2015/03/running-docker-applications-apache.html) – clsbartek

+3

И не кричите Java :) –

ответ

1

Для развертывания и запуска вашего веб-приложения на основе Java вам необходим веб-сервер или контейнер сервера приложений, например tomcat или Jboss (и многие другие). Ваши файлы «techpoint.war» должны быть скопированы в определенную папку, зависит от каждого веб-сервера. Например, если вы используете Tomcat, вы можете скопировать его в папку/webapps. Tomcat будет извлекать и разворачивать военный файл. Вы можете добавить в свой DockerFile следующее.

FROM tomcat:8.5.11-jre8 
COPY /<war_file_location>/techpoint.war /usr/local/tomcat/webapps/techpoint.war 

Вы можете создать изображение с помощью команды сборки докеров и запустить контейнер из созданного изображения.

docker build -t techpoint. 
docker run -it --rm -p 8091:8080 techpoint 

Теперь Tomcat будет извлекать и развертывать войну file.How для доступа к развернутое приложение зависит от вебсервера вашего приложения. Например,

http://<ip_address>:8091/techpoint/index.html 
Смежные вопросы