我是Docker的新手,我正在学习他们的官方教程-https://docs.docker.com/get-started/。
我正在尝试使用此命令启动容器-docker run -dp 3000:3000 getting-started
。
然而,当我试图打开浏览器到http://localhost:3000
时,我得到了x1c 0d1x
我已经尝试在不同的端口docker run -dp 3000:80 getting-started
上运行它,但是它将我重定向到docker tutrial页面,这不是我想要的。
我创建了一个app/Dockerfile
文件,内容如下:
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python3 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
我找不到问题所在,我将非常感谢您的帮助。
2条答案
按热度按时间ha5z0ras1#
不知道你是否解决过这个问题,但我有一个类似的问题,因为我错过了这一节中所有重要的一行:
“如果您尚未执行此操作,请打开终端并***转到包含Dockerfile的应用程序目录***”
rjee0c152#
你的Dockerfile,就像我的http://localhost/tutorial/our-application/一样,没有
行,而这一行确实出现在www.example.com的Dockerfile中https://docs.docker.com/get-started/02_our_app/#build-the-apps-container-image(在pbay的答案中提供了链接)。
如果没有这一行,生成的容器不会暴露端口3000,并且docker start -dp 3000:(whatever)肯定会失败。这是我作为一个近乎绝对初学者的理解,但其他人似乎在没有这行代码的情况下成功运行了容器。去想想为什么/如何。我准备好接受启发了。]* 在Windows上的“Docker Desktop”中,您可以在 Jmeter 板中看到容器在启动时立即退出。
我添加了EXPOSE 3000行,使用与第一次相同的命令重建并重新运行:
它现在工作正常。
(Rant:“如果你以前创建过Dockerfiles,你可能会在下面的Dockerfile中看到一些缺陷。”他们说。好吧,这不是一个小缺陷-这是一个初学者令人沮丧的陷阱。为什么?)