Maison >développement back-end >Golang >Comment déboguer Docker-Compose ? Où est défini le chemin de configuration ?

Comment déboguer Docker-Compose ? Où est défini le chemin de configuration ?

王林
王林avant
2024-02-10 12:48:20847parcourir

Comment déboguer Docker-Compose ? Où est défini le chemin de configuration ?

L'éditeur PHP Xinyi vous présentera comment déboguer docker-compose et comment définir le chemin de configuration. Le débogage de docker-compose est une étape importante dans le dépannage des applications conteneurisées et aide les développeurs à identifier les erreurs et à les corriger. Pour déboguer docker-compose, vous devez d'abord vérifier le fichier docker-compose.yml pour les erreurs de syntaxe et les fautes de frappe. Si le fichier est correct, vous pouvez utiliser la commande « docker-compose config » pour vérifier l'exactitude du fichier de configuration. Le chemin de configuration est généralement défini dans le fichier docker-compose.yml, et le mot-clé « volumes » peut être utilisé pour spécifier le chemin partagé entre le conteneur et l'hôte. Lors de la configuration du chemin, vous devez également vérifier si le chemin existe sur l'hôte pour garantir que le conteneur peut accéder correctement aux fichiers requis. Grâce à la méthode ci-dessus, vous pouvez facilement déboguer docker-compose et définir le chemin de configuration.

Contenu de la question

J'essaie de déboguer docker-compose ce fichier Go, pour résoudre un problème (celui-ci). Pour ce faire, j'ai mis en place un débogueur GoLang

Le résultat de

go run main.go -f /.../project_root/docker-compose.yml -f /.../project_root/folder1/docker-compose.yml config est comme prévu, fichiers de configuration fusionnés.

Pour une raison quelconque, je ne trouve pas les fichiers de configuration définis dans le code, bien qu'ils doivent être définis quelque part car le résultat correspond aux fichiers de configuration correctement fusionnés. Je soupçonne qu'ils doivent être installés quelque part près d'ici ou d'ici. Mais à la place précédente, cli.configFile 的值为 nil,而在后一个地方,o.ConfigPaths 的值为 nil.

J'ai donc deux questions :

  1. Où est défini le fichier de configuration ? et
  2. (si je ne peux pas répondre 1) Qu'est-ce que je fais de mal en essayant de simuler le comportement de la commande docker-compose réelle ?

Modifier

Sur la base de la question ci-dessus et de la recherche de l'endroit où le chemin de configuration peut être défini, ma question est maintenant de savoir où définir le chemin du volume.

Solution

Quels sont les chemins de configuration ? Fichier de configuration par défaut (référentiel docker-compose.yaml)的路径由 cli.withdefaultconfigpath 方法设置(在 compose-go). Les noms possibles pour la configuration par défaut sont définis ici一> :

// defaultfilenames defines the compose file names for auto-discovery (in order of preference)
var defaultfilenames = []string{"compose.yaml", "compose.yml", "docker-compose.yml", "docker-compose.yaml"}

withdefaultconfigpath 方法会迭代此列表,如果找到匹配的文件,则会将其应用于 projectoptions 结构中的 configpathschamp, ici :

type projectoptions struct {
    projectname   string
    profiles      []string
    configpaths   []string
    workdir       string
    projectdir    string
    envfile       string
    compatibility bool
}
Dans la méthode

withdefaultconfigpath方法应用在toprojectoptions, ici :

func (o *ProjectOptions) toProjectOptions(po ...cli.ProjectOptionsFn) (*cli.ProjectOptions, error) {
    return cli.NewProjectOptions(o.ConfigPaths,
        append(po,
            cli.WithWorkingDirectory(o.ProjectDir),
            cli.WithOsEnv,
            cli.WithEnvFile(o.EnvFile),
            cli.WithDotEnv,
            cli.WithConfigFileEnv,
            cli.WithDefaultConfigPath,
            cli.WithName(o.ProjectName))...)
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer