【发布时间】:2017-10-27 11:26:32
【问题描述】:
我在为我的 nodejs 应用程序配置 docker 时遇到问题。
我之前已经为 php 和 rails 设置了容器,端口转发工作完美无缺,但对于这种情况,我似乎无法让它工作。
运行:docker ps,我得到以下信息:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a60f9c82d600 29c7d94a8c58 "/bin/sh -c 'npm s..." 5 seconds ago Up 3 seconds 3000/tcp romantic_albattani
如您所见,我没有得到通常的:0.0.0.0:3000->3000/tcp,这是我所期待的。
docker-compose ps 给出:
Name Command State Ports
------------------------------
我的 docker-compose.yml:
web:
build: .
volumes:
- .:/app
volumes_from:
- box
ports:
- "3000:3000"
box:
image: busybox
volumes:
- /node_modules
我的 Docker 文件:
FROM node:8.7.0
# The base node image sets a very verbose log level.
ENV NPM_CONFIG_LOGLEVEL warn
WORKDIR /tmp
COPY package.json /tmp/
RUN npm install
WORKDIR /app
ADD . /app
RUN cp -a /tmp/node_modules /app/
#ENV PORT=3000
EXPOSE 3000
CMD npm start
我正在运行命令:docker-compose up --build
感谢您在这一点上的任何帮助。
我不知道 docker inspect 是否有用,但如果有,请告诉我,我也会发布它。
编辑:更改了我的 Dockerfile 以遵循答案。
【问题讨论】:
-
如果你运行 docker logs -f a60f9c82d600 那个容器的日志是什么?你也检查过端口是否打开并且没有其他东西在监听它吗?
-
@Sergiu:我得到以下信息:
Error response from daemon: configured logging driver does not support reading -
那是你的问题 :) 容器没有正常运行,因为你的日志。我会从那里开始调试
-
romantic_albattani是一个随机名称。 Docker compose 不使用随机名称。确保您的撰写容器没有退出。如果你不需要它,就杀掉那些浪漫的东西。 -
@Sergiu 没问题。他正在使用不同的日志记录驱动程序
标签: node.js docker docker-compose dockerfile