Wie debugge ich Docker-Compose? Wo ist der Konfigurationspfad eingestellt?

王林
Freigeben: 2024-02-10 12:48:20
nach vorne
833 Leute haben es durchsucht

Wie debugge ich Docker-Compose? Wo ist der Konfigurationspfad eingestellt?

Der PHP-Editor Xinyi stellt Ihnen vor, wie Sie Docker-Compose debuggen und den Konfigurationspfad festlegen. Das Debuggen von Docker-Compose ist ein wichtiger Schritt bei der Fehlerbehebung bei Containeranwendungen und hilft Entwicklern, Fehler zu identifizieren und zu beheben. Um Docker-Compose zu debuggen, müssen Sie zunächst die Datei docker-compose.yml auf Syntaxfehler und Tippfehler überprüfen. Wenn die Datei korrekt ist, können Sie mit dem Befehl „docker-compose config“ die Richtigkeit der Konfigurationsdatei überprüfen. Der Konfigurationspfad wird normalerweise in der Datei docker-compose.yml festgelegt, und das Schlüsselwort „volumes“ kann verwendet werden, um den gemeinsamen Pfad zwischen dem Container und dem Host anzugeben. Bei der Konfiguration des Pfades müssen Sie auch darauf achten, ob der Pfad auf dem Host vorhanden ist, um sicherzustellen, dass der Container korrekt auf die erforderlichen Dateien zugreifen kann. Mit der oben genannten Methode können Sie Docker-Compose einfach debuggen und den Konfigurationspfad festlegen.

Frageninhalt

Ich versuche, diese Go-Datei zu debuggen docker-compose, um ein Problem (dieses) zu lösen. Dazu habe ich einen GoLang-Debugger eingerichtet

Die Ausgabe von

go run main.go -f /.../project_root/docker-compose.yml -f /.../project_root/folder1/docker-compose.yml config sind wie erwartet zusammengeführte Konfigurationsdateien.

Aus irgendeinem Grund kann ich die im Code festgelegten Konfigurationsdateien nicht finden, obwohl sie irgendwo festgelegt werden müssen, da die Ausgabe die korrekt zusammengeführten Konfigurationsdateien sind. Ich vermute, dass sie irgendwo in der Nähe hier oder hier aufgestellt sein müssen. Aber an der vorherigen Stelle, cli.configFile 的值为 nil,而在后一个地方,o.ConfigPaths 的值为 nil.

Daher habe ich zwei Fragen:

  1. Wo ist die Konfigurationsdatei eingestellt? und
  2. (falls Antwort 1 nicht möglich ist) Was mache ich falsch, wenn ich versuche, das Verhalten des tatsächlichen docker-compose-Befehls zu simulieren?

Bearbeiten

Basierend auf der obigen Frage und der Feststellung, wo der Konfigurationspfad festgelegt werden könnte, lautet meine Frage nun, wo der Volume-Pfad festgelegt werden soll.

Lösung

Was sind die Konfigurationspfade? Standardkonfigurationsdatei (docker-compose.yaml)的路径由 cli.withdefaultconfigpath 方法设置(在 compose-go Repository). Mögliche Namen für die Standardkonfiguration werden hier一> eingestellt:

// 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"}
Nach dem Login kopieren

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

type projectoptions struct {
    projectname   string
    profiles      []string
    configpaths   []string
    workdir       string
    projectdir    string
    envfile       string
    compatibility bool
}
Nach dem Login kopieren
In der

withdefaultconfigpath方法应用在toprojectoptions-Methode, hier:

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))...)
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie debugge ich Docker-Compose? Wo ist der Konfigurationspfad eingestellt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage