簡體   English   中英

使用 Docker stack deploy -c docker-compose.yaml m.network 時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM