【发布时间】:2019-05-14 12:55:07
【问题描述】:
如何正确配置和构建我的 docker 容器/映像以在 Web 浏览器上运行?
我有一个流星网络应用程序,并使用现有的基础图像之一:jshimko/meteor-launchpad,这是由Depolyment & Monitoring 上的官方 Meteor 指南推荐的,教程位于 meteor-launchpad-github .我已经能够基于我的 网络应用 构建图像,但它从未分配过 端口,因此我无法在浏览器中运行它。
将Dockerfile添加到我的网络应用程序的根目录,并添加以下内容
FROM debian:jessie
为了构建图像,我在终端中运行以下命令
docker build -t sirbt/myapp .
哪个屈服了:
Sending build context to Docker daemon 2.331MB
Step 1/1 : FROM debian:jessie
---> b6e9658de383
Successfully built b6e9658de383
Successfully tagged sirbt/myapp:latest
然后我开始将以下内容保存在.dockerignore 文件中,我也保存在应用程序目录根目录中
.git
.meteor/local
node_modules
然后运行下面的代码在容器中运行myapp
docker run -d \
-e ROOT_URL=http://example.com \
-e MONGO_URL=mongodb://url \
-e MONGO_OPLOG_URL=mongodb://oplog_url \
-e MAIL_URL=smtp://mail_url.com \
-p 70:3000 \
sirbt/myapp
然后代码生成:
4e616999e521014fcb19d33869b45c79d93d6774d2d02e2f413343b72294f88b
我按照这个命令:
docker ps
哪个产量:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
然而
docker ps -ayields:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e616999e521 sirbt/myapp "bash" 3 minutes ago Exited (0) 2 minutes ago compassionate_greider
如您所知,没有将 port 分配给容器以使我能够在浏览器上运行它。本教程建议此时我应该能够在端口 80 (在我的情况下为端口 70) 上的 localhost 上运行它。我在这里想念什么?如何配置我的 docker 容器,以便分配一个端口,使我能够在浏览器中运行它?
在下面找到我的docker-compose.yml的内容
# docker-compose.yml
app:
image: yourname/app
ports:
- "70:3000"
links:
- mongo
environment:
- ROOT_URL=http://example.com
- MONGO_URL=mongodb://mongo:27017/meteor
mongo:
image: mongo:latest
command: mongod --storageEngine=wiredTiger
更新以反映我为什么不在我的 dockerfile 中使用FROM jshimko/meteor-launchpad:latest
当我按照教程中的建议使用 FROM jshimko/meteor-launchpad:latest 更新我的 Dockerfile 时。我收到以下错误消息:
`Get:6 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Fetched 10.1 MB in 8s (1154 kB/s)
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)
E: Some index files failed to download. They have been ignored, or old ones used instead.
The command '/bin/sh -c cd $APP_SOURCE_DIR && $BUILD_SCRIPTS_DIR/install-deps.sh && $BUILD_SCRIPTS_DIR/install-node.sh && $BUILD_SCRIPTS_DIR/install-phantom.sh && $BUILD_SCRIPTS_DIR/install-graphicsmagick.sh && $BUILD_SCRIPTS_DIR/install-mongo.sh && $BUILD_SCRIPTS_DIR/install-meteor.sh && $BUILD_SCRIPTS_DIR/build-meteor.sh && $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 100`
【问题讨论】:
-
您的容器已退出。使用 ** docker logs -f
** 检查日志并更新有问题的日志。你可能遗漏了什么。 -
@Akshaybarahate 感谢您的及时响应,遗憾的是
docker logs -f 9a613c49cd46命令没有产生任何结果。请回复 -
那是你的整个 Dockerfile,那一行吗?你是
COPY你的应用程序还是设置了默认的CMD? -
@DavidMaze 是的,不幸的是,就是这样!我是 Docker 镜像的新手,看起来教程已经完成了。任何帮助将不胜感激。
标签: docker meteor docker-compose containers