首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用对接组合填充对接机

用对接组合填充对接机
EN

Stack Overflow用户
提问于 2017-08-16 06:26:00
回答 1查看 1K关注 0票数 4

编辑如何在码头机上启动容器?

我提供了3台码头机器,并将两台作为工人加入到一台主机器上。然而,我的代码或服务似乎没有出现在机器中。如何在码头机上运行坞-组合文件?

通常,在开发过程中,我运行docker-compose up。但是,“停靠组合”在框中不可用。我不知道这台机器是在什么时候开始运行码头集装箱的,也不知道是怎么做到的。作为创建堆栈的一部分,我传递了docker-compose.prod.ymlecho docker stack deploy -c docker-compoe.prod.yml app

这一切都是来自Heroku的新鲜事物。只是想知道这样做的唯一方法是将ssh放到每个框中,然后手动复制文件。

我希望能够docker-machine ssh host。然后在这个外壳里面能够docker-compose up

如果我必须手动同步所有的脏文件,那么我想知道堆栈到底做了什么?

编辑

代码语言:javascript
复制
version: "3"

services:
  api:
    image: "api"
    command: rails server -b "0.0.0.0" -e production
    depends_on:
      - db
      - redis
    deploy:
      replicas: 3
      resources:
        cpus: "0.1"
        memory: 50M
      restart_policy:
        condition: on-failure
    env_file:
      - .env-prod
    networks:
      - apinet
    ports:
      - "3000:3000"
  client:
    image: "client"
    depends_on:
      - api
    deploy:
      restart_policy:
        condition: on-failure
    env_file:
      - .env-prod
    networks:
      - apinet
      - clientnet
    ports:
      - "4200:4200"
      - "35730:35730"
  db:
    deploy:
      placement:
        constaints: [node.role == manager]
      restart_policy:
        condition: on-failure
    env_file: .env-prod
    image: mysql
    ports:
      - "3306:3306"
    volumes:
      - ~/.docker-volumes/app/mysql/data:/var/lib/mysql/data
  redis:
    deploy:
      placement:
        constaints: [node.role == manager]
      restart_policy:
        condition: on-failure
    image: redis:alpine
    ports:
      - "6379:6379"
    volumes:
      - ~/.docker-volumes/app/redis/data:/var/lib/redis/data
  nginx:
    image: app_nginx
    deploy:
      restart_policy:
        condition: on-failure
    env_file: .env-prod
    depends_on:
      - client
      - api
    networks:
      - apinet
      - clientnet
    ports:
      - "80:80"
networks:
  apinet:
    driver: overlay
  clientnet:
    driver: overlay
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-16 06:53:29

你不会用一个码头来经营其他码头的。这不是作曲的用途。

您必须设置一个坞编写脚本,其中所有的机器都是"连系“,这样它们就可以互相交谈了。不管你做了什么,这取决于你想要运行的软件。(例如,如果一个主机必须使用其他节点,您将为主计算机提供一个配置文件,它将在哪里/如何找到节点)。

举个例子:

查看该文件中的我为我的麋鹿堆制作的文件,我声明了2台机器(Elasticsearch和Kibana),并将它们与(现在已被废弃的)链接在一起。(这种情况现在是半自动发生的,请参阅文档了解更多细节。)

然后,在kibana.yml文件(在第10行)中,我将Kibana机器指向Elasticsearch机器(使用它的docker-复合名称/链接名)。

这使得Kibana实例(假设这将是一个主机)能够与其各自的Elasticsearch实例(图像,这将是一个从机器)进行对话。

下面是你最后的陈述:

我希望能够对接机器ssh主机。然后里面的壳就可以对接-合成。

这在某种程度上是正确的,您可以使用以下命令访问Docker中的交互式(bash) shell:

代码语言:javascript
复制
docker exec --ti {ID/NAME of docker} /bin/bash

这将不允许您运行坞-撰写,因为这肯定会导致臭名昭著的德罗斯特效应的变化:

图像源

你的新问题

如果我必须手动同步所有的脏文件,那么我想知道堆栈到底做了什么?

不需要手动操作,您可以使用容器中的持久存储来访问来自其他文件夹的数据。基本上,您将分配一个本地文件夹来保存数据,然后将该文件夹“绑定”到停靠机器。从而允许码头工人自由访问数据。阅读文档获得更多信息。

对于堆栈,堆栈是在坞云中使用的,与坞-撰写脚本具有相同的一般用途。它确实提供了一些额外的部署选项,当您部署到对接云而不是单个对接实例时。同样,请阅读文档以获得更多信息。

你的对接者编辑

由于你最近的编辑,我觉得有义务深入到码头对接的事情更多的细节。

在码头上运行码头集装箱通常是不建议。不过,这是有可能的,甚至在码头客博客中也有它的特色。

不过,让我重申,您的用例需要同级容器,而不是嵌套容器。请再读一遍我的帖子,但要对兄弟姐妹容器的想法保持开放的心态。如果你对此有任何(具体的)问题,我会帮助你做得更好;)

设置一台“码头机”

设置码头可以做一千种方式,其中一种方式,我可以找到在这个github页面。

我为一位朋友写了那篇教程,它涵盖了对接机的安装和对接机的自动启动(同时使用了坞机运行和对接-组合)。

无论你愿意怎样,它在过去都为我服务得很好:

我强烈建议安装维护者来管理/检查容器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45706432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档