![](/img/trans.png)
[英]How to deploy application with docker-compose.yaml file in Heroku
[英]Error when using Docker stack deploy -c docker-compose.yaml mynetwork
這是我的.yaml
version: "3.3"
services:
database:
image: mysql:8
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_USER: ${mysql_user}
MYSQL_PASSWORD: ${mysql_password}
MYSQL_ROOT_PASSWORD: ${mysql_root_password}
ports:
- "6033:3306"
networks:
- ${network_name}
volumes:
- dbdata:/var/lib/mysql
- "./.scripts/schema.sql:/docker-entrypoint-initdb.d/1.sql"
- "./.scripts/data.sql:/docker-entrypoint-initdb.d/2.sql"
secrets:
- mysql_user
- mysql_password
- mysql_root_password
- container_name
- network_name
secrets:
mysql_user:
file: /run/secrets/mysql_user
mysql_password:
file: /run/secrets/mysql_password
mysql_root_password:
file: /run/secrets/mysql_root_password
network_name:
file: /run/secrets/network_name
networks:
${network_name}:
driver: bridge
這是我的腳本
#!/bin/bash
# Leave current swarm
docker swarm leave --force
# Initialize the host as a Swarm manager
docker swarm init
# Create the secrets
echo "server_user" | docker secret create mysql_user -
echo "server_password" | docker secret create mysql_password -
echo "a1128f69-e6f7-4e93-a2df-3d4db6030abc" | docker secret create mysql_root_password -
echo "template_network" | docker secret create network_name -
# Deploy the stack using the secrets
docker stack deploy -c docker-compose.yaml mynetwork
這是錯誤
Node left the swarm.
Swarm initialized: current node (y46rjvlu57bibyhgwk7nthykw) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-161prfq442ha035laq1plnv1o2qfqs026dmg6aslpd4kao7o0i-bnwc5zxiwt3ctmfbxfoszbick 192.168.65.3:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
l3nrkqhy7ygtrb05x7c5rvavu
xrhp70n50waaas1hqha8fk2j2
wj1y8runsi8vydpzc09hp9bmp
u5b6suutp7tkt4lqd5i90bgif
Creating network mynetwork_
failed to create network mynetwork_: Error response from daemon: rpc error: code = InvalidArgument desc = name must be valid as a DNS name component
當我不對變量使用 docker 秘密時,我沒有收到錯誤,所以我想知道這是否與它有關。
我也嘗試過重新啟動/清除/銷毀 Docker 中的所有容器/.networks/services/images。
也歡迎任何幫助或改進技巧。
刪除兩個networks:
塊。
這里的實際問題是頂級networks:
。 這在任何特定服務的上下文之外,因此您在database
服務中獲得network_name
秘密的地方,不會發生在頂層。 這意味着 Compose 嘗試將環境變量network_name
擴展為 .network 名稱,但它是空的。
(在 Swarm 模式下,您可能也不需要bridge
.networking。)
如果您刪除networks:
塊,那么 Compose 將創建一個名為default
的 .network 並將容器附加到它。 如果您確實需要一些非標准設置,那么可以配置default
的 .network,但保留default
名稱並默認將容器附加到它。 更多詳細信息,請參閱 Docker 文檔中的Networking in Compose 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.