在docker容器中运行maven webapp

lut*_*ien 7 maven tomcat7 docker

我正在尝试使用Maven构建一个简单的Web应用程序,并在Docker容器中运行Tomcat7.

这是我的结构:

- Dockerfile
- pom.xml
- src/main/webapp/index.hmtl
Run Code Online (Sandbox Code Playgroud)

这是我的Dockerfile:

FROM java:8

# Install maven
RUN apt-get -y update && apt-get install -y maven

WORKDIR /code

# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml

# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package"]

EXPOSE 8080
CMD ["mvn", "tomcat7:run"]
Run Code Online (Sandbox Code Playgroud)

我正在构建Docker镜像

docker build -t webapp-example .
Run Code Online (Sandbox Code Playgroud)

并尝试运行它

docker run -d -p 8080:8080 webapp-example
Run Code Online (Sandbox Code Playgroud)

但显然它不起作用.

有任何想法吗?

Gau*_*avJ 4

由于您使用 tty 和交互式标志共享运行,如下所示解决了您的问题,

docker run -ti --rm -p 8080:8080 webapp-example

这是因为您的基础映像是java:8,它主要是为了在前端模式(带有 -ti 标志)下运行应用程序或仅在 -d 模式下编译而创建的。

另外,由于 Maven 是构建工具,不应该用于运行应用程序,因此您应该,

  1. 使用 maven:latest image 创建 web 应用程序。
  2. 使用官方tomcat 镜像将其单独部署为 tomcat 容器。