


Warum kann die Datei nach dem Kopieren in den Container nicht gefunden werden?
php-Editor Yuzai kann bei der Verwendung der Container-Technologie auf ein häufiges Problem stoßen: Dateien können nach dem Kopieren in den Container nicht gefunden werden. Dieses Problem tritt normalerweise bei der Verwendung von Containerisierungsplattformen wie Docker auf. Der Grund kann sein, dass der Dateipfad falsch eingestellt ist oder das Dateisystem im Container nicht mit dem Host übereinstimmt. Es gibt viele Möglichkeiten, dieses Problem zu lösen, z. B. die Verwendung absoluter Pfade oder das Kopieren von Dateien in den Container über einen freigegebenen Ordner. Bevor wir dieses Problem lösen können, müssen wir zunächst die Zuordnungsbeziehung zwischen dem Dateisystem des Containers und dem Dateipfad verstehen und wissen, wie der Dateipfad richtig konfiguriert wird.
Frageninhalt
Ich habe eine Docker-Datei wie unten gezeigt:
from golang:1.19 as builder workdir /app copy . . run cgo_enabled=0 go build -v -o "hello-bin" #from scratch from alpine copy --from=builder /app/hello-bin /app/hello-bin copy --from=builder /app/start.sh /app/start.sh workdir /app entrypoint [ "./start.sh" ]
Es erstellt einfach eine Binärdatei aus der Hello-World-Go-Datei. Wenn ich jedoch versuche, diesen Container mit den folgenden Docker-Compose-Einstellungen auszuführen, wird exec ./start.sh: no such file or directory
angezeigt.
version: "3" services: hello: restart: always build: context: . dockerfile: dockerfile
Die Verzeichnisstruktur ist
❯ tree . . ├── dockerfile ├── docker-compose.yaml ├── go.mod ├── hello ├── init.go └── start.sh
Deshalb wird start.sh
应通过 copy 加载到 <code>builder
容器中。 . 行也是如此,它应该通过 copy --from=builder /app/start.sh /app/start.sh
in den zweiten Behälter weitergeleitet.
Kontext, der Inhalt von start.sh
ist wie folgt:
#!/bin/bash _main() { echo "start" } _main "$@"
Das Verwirrendste für mich ist, dass, wenn ich es in der Docker-Datei in cmd [ "ls", "-l" ]
ändere, es tatsächlich gedruckt wird
awesomeproject3-hello-1 | -rwxr-xr-x 1 root root 1819562 May 19 02:41 hello-bin awesomeproject3-hello-1 | -rwxrwxrwx 1 root root 51 May 19 02:39 start.sh
Wenn ich es in der Docker-Datei in entrypoint [ './hello-bin' ]
,二进制文件也会成功运行。我只是不明白为什么它说没有 ./start.sh
ändere.
Update: Inspiriert von @larsks ist mir aufgefallen, dass es wie von Zauberhand funktioniert, wenn ich den Header von ./start.sh
von ./start.sh
的标头从 #!/bin/bash
更改为 #!/bin/sh
,它会神奇地工作。我仍然很困惑这里的根本问题是什么,如果我想保留 bash 标头,我应该如何修复 docker 文件?
解决方法
发生错误是因为您在 start.sh
中使用了 #!/bin/bash
ändere. Ich bin immer noch verwirrt, was hier das zugrunde liegende Problem ist. Wie soll ich die Docker-Datei reparieren, wenn ich die Bash-Header beibehalten möchte?
LösungDer Fehler ist aufgetreten, weil Sie #!/bin/bash
in
bash
Auf dem Alpine-Docker-Image ist Bash standardmäßig nicht installiert. Stattdessen wird die Busybox-Shell verwendet.
Sie können #!/bin/bash
更改为 #!/bin/sh
in einem Container installieren. Siehe
Das obige ist der detaillierte Inhalt vonWarum kann die Datei nach dem Kopieren in den Container nicht gefunden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Ja, die H5-Seitenproduktion ist eine wichtige Implementierungsmethode für die Front-End-Entwicklung, die Kerntechnologien wie HTML, CSS und JavaScript umfasst. Entwickler bauen dynamische und leistungsstarke H5 -Seiten auf, indem sie diese Technologien geschickt kombinieren, z. B. die Verwendung der & lt; canvas & gt; Tag, um Grafiken zu zeichnen oder JavaScript zu verwenden, um das Interaktionsverhalten zu steuern.

Die Methode zur Anpassung der Größe der Größe der Größe der Größe in CSS ist mit Hintergrundfarben einheitlich. In der täglichen Entwicklung begegnen wir häufig Situationen, in denen wir die Details der Benutzeroberfläche wie Anpassung anpassen müssen ...

In Bezug auf die Gründe und Lösungen für falsch ausgerichtete Darstellung von Inline-Block-Elementen. Beim Schreiben von Webseitenlayout stoßen wir oft auf einige scheinbar seltsame Anzeigenprobleme. Vergleichen...

Echtzeit-Bitcoin-USD-Preis Faktoren, die den Bitcoin -Preis beeinflussen Indikatoren für die Vorhersage zukünftiger Bitcoin -Preise Hier finden Sie einige wichtige Informationen zum Preis von Bitcoin in den Jahren 2018-2024:

So verwenden Sie JavaScript oder CSS, um die obere und das Ende der Seite in den Druckeinstellungen des Browsers zu steuern. In den Druckeinstellungen des Browsers gibt es eine Option, um zu steuern, ob das Display ist ...

Wie kann man den 45-Grad-Kurveneffekt des Segmenters erreichen? Bei der Implementierung des Segmenters verwandeln Sie den rechten Rand in eine 45-Grad-Kurve, wenn Sie auf die linke Schaltfläche klicken, und der Punkt ...

Tipps zur Implementierung von Segmentierereffekten im Design der Benutzeroberfläche sind Segmentierer ein gemeinsames Navigationselement, insbesondere in mobilen Anwendungen und reaktionsschnellen Webseiten. ...

Das Problem der Containeröffnung aufgrund einer übermäßigen Auslassung von Text unter Flex -Layout und Lösungen werden verwendet ...
