postgresql affinity - docker service to swarm

时间:2017-09-26 08:21:06

标签: postgresql docker docker-compose docker-swarm affinity

我是docker的新手,我遇到了问题。我希望在docker swarm中获得两个节点之间的亲和力并交换数据。

(示例ip)

我有一位经理:192.168.10.1

和工作人员:192.168.10.2

他们已经连接好了。

我写了docker-compose.yml文件来创建postgres DB的新服务,和 manager yml文件看起来像:

version: '3.1'

services:
    db:
        image: postgres
        environment:
            POSTGRES_DB: My_DB
            POSTGRES_USER: My_DB_User
            POSTGRES_PASSWORD: My_DB_Password
            PG_DATA: /var/lib/postgresql/data/pgdatai
        deploy:
            placement:
                constraints:
                    - node.role == manager
                    - node.labels.type == queue

    adminer:
        image: adminer
        ports:
            - 8080:8080

和工人:

version: '3.1'

services:
    db:
        image: postgres
        environment:
            POSTGRES_DB: My_DB
            POSTGRES_USER: My_DB_User
            POSTGRES_PASSWORD: My_DB_Password
            PG_DATA: /var/lib/postgresql/data/pgdatai
        deploy:
            placement:
                constraints:
                    - node.role == worker
                    - node.labels.type == queue

    adminer:
        image: adminer
        ports:
            - 8080:8080

我的机器上没有堆叠。在下面执行命令(不确定是否正确)我有一个错误:yaml: line 2: did not find expected key

docker stack deploy --compose-file docker-compose.yml my_hostname

我的主机名是由管理员机器中的命令docker node ls读取的

也许某人已经处理了一个非常类似的问题和目标,并且可以给我一个指导。我在互联网上看了几个演示,但我发现那些有点无用。我将非常感谢能够实现这一目标的任何帮助和指导"备份"

1 个答案:

答案 0 :(得分:0)

好的,所以我现在更了解yaml。对于其他任何发生类似问题的人:

1)检查你在yml文件中的写作。你应该仔细考虑白色标记。

2)我重新配置了yml文件:

version: '3'
services:
 db:
  image: postgres
  environment:
   POSTGRES_DB: db_db
   POSTGRES_USER: db_user
   POSTGRES_PASSWORD: db_pass
   PG_DATA: /var/lib/postgresql/data/pgdatai
  expose:
   - "5432"
  ports:
   - "5432:5432"
  volumes:
   - /var/lib/postresql/db/
  deploy:
   placement:
    constraints:
     - node.hostname == vmAPI1

3)我使用命令将服务放入运行swarm:

docker stack deploy --compose-file docker-compose.yml name_of_your_manager_swarm