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