postgresql affinity - docker swarm 服务

postgresql affinity - docker service to swarm

我是 docker 的新手,我有一个问题。我想在 docker 群中的两个节点之间获得亲和力并交换数据。

(示例 ip)

我有一位经理:192.168.10.1

和工作人员:192.168.10.2

他们已经连接。

我写了 docker-compose.yml 文件来使用 postgres 数据库创建新服务,并且 管理器 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读取的

也许有人处理过非常相似的问题和目标,可以给我指导。我在网上看了几个演示,但我发现那些有点没用。对于如何实现此目标的任何帮助和指导,我将不胜感激 "backup"

好的,所以我现在更了解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) 我使用命令为 运行 群提供服务:

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