【发布时间】:2021-01-29 21:47:45
【问题描述】:
我正在尝试在 docker 容器中公开一个端口,并尝试从外部主机连接应用程序但我无法连接。
卷曲请求:
curl http://localhost:4400
curl: (56) Recv failure: Connection reset by peer
运行命令:
docker run -p 4400:3002 dev/my-node-app
Dockerfile:
FROM ubuntu:20.04
RUN apt-get update; \
apt-get install -y curl gnupg; \
curl -sL https://deb.nodesource.com/setup_10.x | bash -; \
apt-get install -y nodejs; \
rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
COPY . .
EXPOSE 3002
ENTRYPOINT ["npm", "run", "server:dev"]
也在Dockerfile下面试过
FROM node:12.19.0
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 3002
CMD ["npm", "run", "server:dev"]
但现在出现错误:
Module build failed: Error: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by /usr/src/app/node_modules/node-sass/vendor/linux-x64-64/binding.node)
我认为我运行正确,但不知何故我的 Dockerfile 中有错误,如果有人帮助我,我将不胜感激。
谢谢
【问题讨论】:
-
您是否已经检查了容器日志以查看节点服务是否正在运行?
-
而且我建议你用ubuntu 镜像替换node 镜像,像ubuntu 这样的bit image 使用不是一个好习惯。您可以将步骤
FROM ubuntu:20.04和RUN apt-get update; ...替换为FROM node:12.19.0 -
@everacosta 嗨,我这样做了,但那样我得到了错误:模块构建失败:错误:/lib/x86_64-linux-gnu/libm.so.6:版本“GLIBC_2.29”未找到(/usr/src/app/node_modules/node-sass/vendor/linux-x64-64/binding.node 需要)
-
完美,问题出在 RUN 步骤中,您可以尝试用
FROM node:12.19.0替换那 2 步吗 -
更新了问题中的 Dockerfile,出现错误,因此无法测试 :(