Dockerfile无法正常运行CMD或未公开端口

时间:2019-03-13 12:15:18

标签: docker dockerfile apache-nifi

我不想再玩Dockerfiles了。所以我尝试在Docker中运行Apache Nifi。我知道已经有一个容器,用于培训。 我将Dockerfile配置如下:

FROM openjdk:8-jre-alpine
COPY . /app
WORKDIR /app
EXPOSE 8080
CMD ["sh","nifi-1.9.0/bin/nifi.sh","start"]

现在这似乎可行,但是当我尝试使用以下命令运行容器时:

docker build --tag nifid .
docker run --name nifi-app -p 8080:8080 nifid

它似乎可以运行,但是端口没有暴露,也无法通过localhost:8080到达应用程序。 有关如何进行的任何建议? 这就是docker ps --all show me

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
ccf75612d5ac        nifid               "sh nifi-1.9.0/bin/n…"   20 hours ago        Exited (0) 20 hours ago                       nifi-app

我意识到该应用程序现在很激动。 Dockerfile出了什么问题?

编辑: 码头工人的日志[Container ID]随地吐痰如下:

Java home: /usr/lib/jvm/java-1.8-openjdk/jre
NiFi home: /app/nifi-1.9.0

Bootstrap Config File: /app/nifi-1.9.0/conf/bootstrap.conf

编辑: 找到一个不错的“文档” https://hub.docker.com/r/apache/nifi/dockerfile

需要深入一点,但应该对工作

2 个答案:

答案 0 :(得分:0)

您的容器好像停了下来(状态已退出)

docker ps (shows running containers)
docker ps -a (shows all containers, even stopped)

尝试

docker logs <container-id> 

查看容器的输出。它将正确告诉您容器为何停止。

答案 1 :(得分:0)

容器需要一个pid 0进程才能永远运行,直到被杀死或出错为止。

例如, enter image description here

请参考https://stackoverflow.com/a/45450456/1926952保持容器运行