Dockerfile CMD 不启动服务
Dockerfile CMD does not start service
我有一个包含以下命令的 Dockerfile:
FROM alpine:3.7
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN apk update && \
apk add --no-cache openjdk8 && \
apk add --no-cache curl && \
mkdir -p "$CATALINA_HOME" && \
cd /tmp && \
curl -O https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M26/bin/apache-tomcat-9.
tar xvzf apache-tomcat-9.0.0.M26.tar.gz -C . && \
mv apache-tomcat-9.0.0.M26/* "$CATALINA_HOME"
COPY tomcat-users.xml "$CATALINA_HOME"/conf/
COPY context.xml "$CATALINA_HOME"/webapps/manager/META-INF/
EXPOSE 8080
CMD ["catalina.sh", "start"]
我使用下一个命令创建了图像:
sudo docker build --tag tomcat_demo .
并启动我使用的容器:
sudo docker run -p 8080:8080 -dit tomcat_demo
最后很遗憾:
Exited (0) 19 seconds ago
你能帮我弄清楚为什么服务不可用吗?我怎样才能让它可用?
你需要在前台安排Tomcat(或其他进程)到运行。 catalina.sh start
命令旨在与遗留初始化系统一起使用,并将自动将 Tomcat 置于后台。从 Docker 的角度来看,您的命令似乎已完成,因此容器已清理。
一个简单的处理方法是在启动后无限休眠 Tomcat:
CMD catalina.sh start; sleep inf
但更好的解决方法是查看 catalina.sh
中可用的其他选项,如 this answer 中所述:
CMD ["catalina.sh", "run"]
我有一个包含以下命令的 Dockerfile:
FROM alpine:3.7
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN apk update && \
apk add --no-cache openjdk8 && \
apk add --no-cache curl && \
mkdir -p "$CATALINA_HOME" && \
cd /tmp && \
curl -O https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.0.M26/bin/apache-tomcat-9.
tar xvzf apache-tomcat-9.0.0.M26.tar.gz -C . && \
mv apache-tomcat-9.0.0.M26/* "$CATALINA_HOME"
COPY tomcat-users.xml "$CATALINA_HOME"/conf/
COPY context.xml "$CATALINA_HOME"/webapps/manager/META-INF/
EXPOSE 8080
CMD ["catalina.sh", "start"]
我使用下一个命令创建了图像:
sudo docker build --tag tomcat_demo .
并启动我使用的容器:
sudo docker run -p 8080:8080 -dit tomcat_demo
最后很遗憾:
Exited (0) 19 seconds ago
你能帮我弄清楚为什么服务不可用吗?我怎样才能让它可用?
你需要在前台安排Tomcat(或其他进程)到运行。 catalina.sh start
命令旨在与遗留初始化系统一起使用,并将自动将 Tomcat 置于后台。从 Docker 的角度来看,您的命令似乎已完成,因此容器已清理。
一个简单的处理方法是在启动后无限休眠 Tomcat:
CMD catalina.sh start; sleep inf
但更好的解决方法是查看 catalina.sh
中可用的其他选项,如 this answer 中所述:
CMD ["catalina.sh", "run"]