gpt4 book ai didi

docker - 如何配置docker容器在浏览器中运行?

转载 作者:行者123 更新时间:2023-12-02 18:47:57 25 4
gpt4 key购买 nike

如何正确配置和构建可在Web浏览器上运行的docker容器/镜像?

我有一个 meteor Web应用程序,并且使用了现有的基本镜像之一: jshimko / meteor-launchpad ,由官方 meteor 指南Depolyment & Monitoring推荐,该教程位于meteor-launchpad-github上。我已经能够基于网络应用程序构建图像,但是它从未分配端口,因此无法在浏览器中运行它。

在我的Web应用程序的根目录中添加了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 -a等级:
CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS PORTS                                      NAMES
4e616999e521 sirbt/myapp "bash" 3 minutes ago Exited (0) 2 minutes ago compassionate_greider

如您所知,没有为容器分配 端口,以使我能够在浏览器上运行它。本教程建议此时,我应该能够在localhost的端口80 (在我的情况下为端口70)上运行它。我在这里想念什么?如何配置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

更新以反射(reflect)为什么我在我的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`

最佳答案

请确保仔细阅读 meteor 发射板教程,因为您似乎错过了几点。

我注意到您说您的Dockerfile是:

FROM debian:jessie

那是你的主要问题。它应该是:
FROM jshimko/meteor-launchpad:latest

(或 FROM jshimko/meteor-launchpad:some-specific-version)。

通过更改 FROM,您使本教程的其余部分无关紧要。现在,您只是构建并运行一个不执行任何操作的基本Debian容器。

不幸的是,看来 meteor-launchpad图像已损坏。它在大约2年内没有更新,它是基于Debian的旧版本构建的,该版本的源已被存档-这是导致构建错误的原因(请参阅 https://github.com/debuerreotype/docker-debian-artifacts/issues/66)。

如果您真的想使用 meteor-launchpad,建议您克隆它的repo并自己构建镜像。
git clone https://github.com/jshimko/meteor-launchpad.git
cd meteor-launchpad
docker build -t jshimko/meteor-launchpad:latest .

完成之后,您可以按照本教程进行操作。但是,您可能需要在 meteor 发射的Dockerfile中更改 FROM debian:jessie才能使用更新的Debian版本。这不是一个有值(value)的解决方案,但是我建议您这样做,因为听起来您只是在尝试启动一个学习项目并使其运行。

我建议您阅读Docker概念,因为meteor-launchpad文档似乎假设您对它们非常熟悉。您可以从 Docker's own tutorial docs开始。

另外,您的 docker-compose.yml文件没有被使用。 Docker Compose是直接发布 docker run命令的替代方法。要使用它,请从YML文件所在的目录中运行命令 docker-compose up [-d]。仅使用您发布的 docker run命令将从您构建的镜像启动一个容器,但不会启动mongo容器。您将不得不单独开始。

关于docker - 如何配置docker容器在浏览器中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56131003/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com