问题标签 [dockerfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1528 浏览

docker - 发布“docker run”命令

一旦我运行“docker run”,我正在寻找一种设置一些命令以在我的 Dockerfile 中运行的方法

我的用例是我有 2 个容器,Web(Apache,PHP),DB(MySQL)

当我在 Web 容器上执行“docker run”并链接到 DB 容器时。我想在我的 Web 容器中执行迁移脚本。

我可以使用“docker exec”进入盒子并运行有效的迁移。如果可能的话,我只想使用 Dockerfile 或使用另一个配置程序来自动执行此操作。

谢谢西蒙

0 投票
1 回答
723 浏览

docker - 在java中使用环境变量发布docker容器链接

我正在尝试使用一个简单的用例来模拟 docker 容器链接,如下所示

1) 一个带有简单 pub-sub java 应用程序的 docker 容器,在同一个容器内有一个发布者和订阅者。我已经使用 dockerfiles 来构建这个 2)一个运行 rabbitmq 的 docker 容器,这是从 docker hub 中提取的。

现在我链接这两个容器,我可以在我的容器 #1 中看到 rabbitmq 环境变量。

现在我的问题是在我的 pub-sub 容器 #1 中使用这些容器变量的最佳方法是什么。我总是可以 java System.getenv 并硬编码环境变量。有没有更好的方法呢?

0 投票
2 回答
19332 浏览

docker - 如何使用 dockerfiles CMD 运行 shell 脚本

我正在使用 dockerfiles 构建一个简单的容器。这是Dockerfile

内容run.sh如下:

这是一个简单的 java 应用程序pub/sub

现在我有另一个运行 rabbitmq 的容器,我正在链接 2 个容器,但是我的每次尝试都失败了,我的pub/sub容器没有启动。有人可以建议如何调试这个问题吗?不知何故 docker logs 没有任何东西。

这是我链接容器的方式:sudo docker run -d -P --name pub_sub --link rabbitmq:rabbitmq1 image_pub_sub

这是我在pub/sub代码中使用别名的方式

我期待我的发布代码将在 rabbitmq 容器中创建一个队列并开始推送消息。我的订阅者代码基本上会连接到同一个 rabbitmq 并开始阅读消息。

当我运行命令时没有任何反应,它只是打印新容器的长 id 并退出。当我运行sudo docker ps -a时,我可以看到以下内容:

所以这意味着我的容器没有运行。

刚才我通过/etc/hosts使用以下命令启动新容器来更新sudo docker run -i -t image_pub_sub /bin/bash. 修改了/etc/hosts这个新容器并添加了以下条目<IP_ADDRESS> rabbitmq1并运行了我的脚本/opt/pubsub/run.sh,它在 nohup 文件中附加了以下消息:

0 投票
1 回答
486 浏览

ubuntu - Dockerfile 中 USER 语句后 Ubuntu Docker 容器中的权限

我创建了一个 Dockerfile

作为父图像。

稍后 Dockerfile 通过创建一个没有 sudo 权限的新组和用户

在执行应用程序之前,我切换到这个新的

问题:此设置是否可以在构建映像并且容器正在运行(例如)后再次获得 root 权限docker exec -it

0 投票
2 回答
730 浏览

clojure - 如何让 Clojure Compojure 应用程序通过 Docker 容器中的已编译 jar 无头运行?

更新:自从最初的一组评论者留下回复以来,这个问题已经改变。对任何混淆表示歉意。


这是我的代码存储库https://github.com/Integralist/spurious-clojure-example您可以将其用作我正在使用的示例。

请注意,上述 repo 依赖于我尚未发布到 Clojars 的库(因为我仍在测试它 - 因此打开了这个问题)。您可以在此处查看该库的源代码:https ://github.com/Integralist/spurious-clojure-aws-sdk-helper

lein ring server我有一个用 Compojure 编写的“hello world”Clojure Web 应用程序,我在使用and运行时运行良好lein run(因为我-main现在创建了一个函数)。当编译成 jar 并运行java -jar app.jar.

我现在的问题是,如果我尝试java -jar app.jar从 Docker 容器中运行默认值,我会收到以下错误告诉我...

我的代码目前正在使用-main这样的函数......

...但是如何让服务器无头启动?我不能完全按照 Compojure 样板代码来破译它在哪里或如何知道何时无头运行或通过浏览器运行?

我知道在命令行上你可以这样做lein ring server-headless,那么程序化的等价物是什么?

0 投票
1 回答
3031 浏览

docker - 在 docker 中管理数据库模式的“正确”方法

我正在开发一个由 Java Web 应用程序和 postgresql 数据库组成的开源应用程序。理想情况下,它可以类似于船厂快速入门中详述的过程进行部署:

  1. 运行纯数据容器
  2. 运行数据库容器
  3. 运行应用程序容器

是否有建议的时间来设置数据库模式?我正在考虑让数据库映像的 Dockerfile 在构建时创建模式,但显然此时 postgres 没有运行。

0 投票
2 回答
129164 浏览

docker - Docker 公开从 7000 到 8000 的所有端口或端口范围

我可以在 Dockerfile 中指定端口范围吗

并且在运行容器时将所有这些暴露的端口绑定到主机上的相同端口?

0 投票
2 回答
1083 浏览

ruby-on-rails - 如何在保留所有者和权限的同时从数据容器挂载卷?

我正在使用 Fig 并尝试使用数据卷容器在 Rails Web 服务器和在另一个容器中运行的 Resque 工作人员之间共享上传的文件。为此,数据卷容器定义了一个/rails/public/system用于共享这些文件的卷。Rails 和 Resque 进程以rails用户身份在各自的容器中运行,这些容器都基于markb/litdistco映像。fig.yml 看起来像这样:

webworker容器运行时,我可以在两者中看到/rails/public/system目录,但是它由root两个容器中的用户拥有,并且目录的权限阻止rails用户写入该目录。

作为参考,有两个 Dockerfile 用于制作markb/litdistco容器。第一个定义了我用于本地开发的基础映像 ( Dockerfile):

这被标记为litdistco-base图像,然后我config/containers/production/Dockerfile用来生成我标记为markb/litdistco并在登台和生产中运行的图像。

谁能解释我如何让数据容器卷安装为rails用户可写的。我非常希望避免以 root 身份运行任何 Ruby 进程,即使在容器内也是如此。

在某些情况下,我还应该提到我正在 Mac OS X 上的 boot2docker 中的 Docker 中开发图像,然后在 Ubuntu 14.04 主机上的 Google Compute Engine 实例上运行它们。谢谢!

0 投票
2 回答
6784 浏览

docker - 将 udp 多播从 eth0 转发到 docker0

我有一个运行 java 应用程序的 docker 容器,该应用程序正在侦听 UDP 多播数据包。我没有收到容器内的数据包,但是它们出现在 eth0 的主机上。

docker有没有办法自动提取这些数据包并将它们转发到容器?

谢谢

0 投票
1 回答
2151 浏览

nginx - Docker 不会附加到图像

我有一个 fig.yml 文件,用于设置我的 docker 容器。我通过键入 ./fig up 来运行它然后它输出以下内容:

因此,一旦完成,一切都会启动并运行。我的问题是由于某种原因它没有附加到我设置的 nginx 容器上。docker ps 命令输出以下内容:

因此,memcache 映像、php 映像和 percona 映像都可以使用,但是没有应有的 nginx docker 映像。

下面是我设置 fig.yml 文件的方法,它基本上是启动所有内容的文件。有人对可能发生的事情有任何想法吗?请注意,我确实将守护程序设置为关闭,因此它不应该自动退出。

fig.yml 文件在这里:

还以为我会包含我的 nginx Dockerfile 以防万一我丢失了任何帮助非常感谢

Nginx Dockerfile