问题标签 [docker-stack]
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.
docker - 获取类型“bind”的无效挂载配置:docker 中不存在绑定源路径
我正在尝试将以下 docker-compose 部署到 docker swarm 集群中。
我确实在docker -compose 所在的相同位置有 data_jenkins ,并将该路径作为 volume 传递。但是为什么抛出源路径不存在。究竟是什么问题。
此外,如果目录不存在 -v 应该正确创建它。为什么不是?
docker - 在 AWS 上的堆栈中部署时,docker 服务日志为空(?)
我有一个 docker-compose.yml,当在本地部署为使用 stack 或 compose 时会产生 3 个服务(parse-server、mongodb、nginx 中的 web-app)。我可以使用docker service logs <id>
.
使用相同的 docker-compose.yml 将堆栈部署到 Amazon EC2,docker service logs <id>
对正在运行的服务的调用不会返回任何内容。好像我正在处理一个空文件。
有谁知道是什么原因造成的和/或我该如何解决?
docker - 在 docker 容器重启时执行相同的入口点脚本
当docker容器/服务在失败后重新启动时,有没有办法重新执行入口点脚本?
我正在使用 docker stack deploy -c docker-compose.yaml abcstack 进行部署。
此撰写文件包含多个服务。
docker - 容器使用的多个服务器(产品,开发)的多个 docker .env?
我真的不知道怎么写标题。
在我的系统中,我有两个实例:
- 产品服务器
- 开发服务器
开发主要用于测试。在每种情况下,我都有两个版本的 AMQP,它们都有不同的主机名。
为了避免重复或不必要的时间在多个项目中重写相同的代码,我想使用 docker compose 拥有的 env 文件,尽管在我阅读的任何地方,没有人讨论这种情况。这种情况取决于堆栈的部署位置,它将使用哪个 env 文件以及存在于 swarm 本身而不是单个项目上的 env 文件。
希望我在解释这一点时没有遗漏任何内容。总结是两个群体,每个群体都有自己的 env 文件,部署到它的容器可以使用这些文件。另外,如果我需要改写任何内容,我会这样做。
docker - 将 Docker Swarm 模式服务放置限制为“非此节点”
我有一个 Docker 集群模式设置,其中节点看起来像这样
- 群管理器
- swarm-worker-01
- swarm-worker-02
- swarm-worker-for-my-special-application
- swarm-worker-for-my-special-application-02
swarm-manager
托管反向代理,工作节点托管一堆或多或少无关的小应用程序(我们是一家小型设计机构)。
在大多数情况下,这些应用程序是低带宽的,只是嗡嗡作响而不会互相打扰。但是,我们现在有一个新的应用程序(我们称之为special-application
),它希望能够部署到任何工作节点(因为它是一个高流量的应用程序),但我想限制除了special application
部署到这些节点之外的其他服务。
所以,我想要这样的东西:
- swarm-worker-01(接受任何容器)
- swarm-worker-02(接受任何容器)
- swarm-worker-for-my-special-application (仅接受
special application
) - swarm-worker-for-my-special-application-02(仅接受
special application
)
一种(一种)解决方案是给特殊节点一个标签,例如docker node update --label-add app-constraint=special-application swarm-worker-for-my-special-application
,然后在我的特殊应用程序上,部署:
在我的其他应用程序上:
但是,这有两个缺点。一是我special-application
只会部署在特殊节点上,而不是所有节点上。第二个是我必须通过我的每一个(数十个)其他服务并重新部署一个约束。
基本上,我希望special application
能够在任何地方部署,同时让某些工作人员只接受来自特殊应用程序的部署,实际上为他们保留容量。
docker - docker swarm 列出服务的依赖项
假设我们有以下堆栈文件:
当我运行docker service inspect mystack_web
生成的输出时,没有显示对depends_on条目的任何引用。
可以吗?以及如何打印给定 docker 服务的依赖项?
docker - docker stack deploy 不部署在 repo 中的代码更改后正在构建的图像
我为build和deploy创建了工作。
作业运行完美,没有错误,项目部署成功。
问题是尽管存储库已更改,但在浏览器中测试时构建并未显示更改,尽管工作区已成功提取具有更改的最新代码。
很少尝试的解决方案
使 docker 镜像构建不使用缓存
在开始构建之前使工作空间清晰
似乎没有任何工作。哪里可能出了问题。
我的项目结构:
项目目录: 里面会有所有的 laravel 项目
Dockerfile: 构建镜像
docker-compose.yml: 在 docker stack 中部署服务
我正在使用docker stack deploy
命令在 docker stack 中运行该服务
我试图删除以前构建的 docker stack 。通过使用 buildID 命名 docker stack 唯一并重新创建一个新堆栈,但它也没有解决。
在尝试删除堆栈并再次生成时。我得到这个问题。
- 由于摘要问题,为什么 docker 堆栈没有获取更新的图像。如果是怎么解决。尽管更改已推送到 bitbucket 代码存储库,但部署并未因此而显示更改。如果我完全完成所有设置,而不仅仅是获取最新代码。
这是用于构建詹金斯作业的 bash 脚本
docker - docker stack rm 后跟 deploy 失败并在连续构建上运行
Jenkins 构建部分中的 Bash 脚本
- 在这里,我正在创建一个 docker 图像
- 向其添加适当的标签以推送到私有存储库
- 如果堆栈存在,则删除堆栈而不是再次部署它。
问题是它在第一次构建中失败,并在下面发布了一些网络问题。如果再次构建,它将在另一个构建上成功运行。我该如何解决这个问题。
我得到的错误:
正如我们所看到的,它删除了服务,并且在服务创建期间,它的投掷网络没有发现问题。
这是我的 docker-compose.yml
docker - 如何动态更改 docker-compose 图像字段
我有一个类似下面的 docker-compose.yml:
我正在使用它在以 swarm 模式运行的节点中部署服务。
每次构建图像时,图像名称可能会根据用户传递的分支名称或用作图像标记的标记名而有所不同。我从詹金斯那里运行它。例如:smstake:
如何将图像名称动态添加到服务的图像参数中。由于 docker stack 不支持构建。我什至不能使用它。我无法找出正确的方法来做到这一点。
我正在尝试部署docker stack deploy -c docker-compose.yml stackname
我的确切要求是:
- 在 jenkins 有一个构建工作,它为我们构建图像。
- 如果标签或分支名称更改,则图像名称不同或更改
- 我们有一个构建作业,可以使用新创建的映像再次部署这些作业。
为新标签创建新映像的原因是我可以回滚到以前构建的映像。
一些编辑: 添加图像名称以添加到 configuration.env 文件中,该文件将在部署命令运行之前使用部署作业中的 echo 命令传递。比 docker-compose 看起来像下面
为什么它没有从 configuration.env 文件中读取,我已经确认在那里设置了该键的正确值。错误信息
创建服务 smstake_app 未能创建服务 smstake_app:来自守护进程的错误响应:rpc 错误:代码 = InvalidArgument desc = ContainerSpec:必须提供图像参考构建步骤“执行外壳”标记构建为失败已完成:失败
postgresql - postgres 容器不从环境变量中获取密码
我正在使用 postgres 容器作为我的微服务应用程序的一部分。这是我的码头文件:
我可以构建此映像并将其发布到我的 azure 映像注册表。我也可以在我的 docker stack yml 文件中使用这个图像:
但是当我尝试连接到这个容器时,我得到以下日志(来自这个容器)
但是当我进入这个容器时,docker exec
我可以看到我的密码:
我在这里做错了什么?