Heim > Backend-Entwicklung > Golang > So erstellen Sie einen einfachen Docker-Container mit installierten Go-Dienstprogrammen

So erstellen Sie einen einfachen Docker-Container mit installierten Go-Dienstprogrammen

PHPz
Freigeben: 2024-02-11 16:24:11
nach vorne
870 Leute haben es durchsucht

如何创建安装了 Go 实用程序的简单 Docker 容器

Der PHP-Editor Zimo zeigt Ihnen, wie Sie einen einfachen Docker-Container erstellen und Go-Dienstprogramme darin installieren. Docker ist eine beliebte Containerisierungsplattform, die Entwicklern hilft, Anwendungen mit ihren Abhängigkeiten zu verpacken, um sie einfach bereitzustellen und in verschiedenen Umgebungen auszuführen. Go ist eine schnelle, effiziente Programmiersprache mit vielen hervorragenden Dienstprogrammen. In diesem Artikel erfahren Sie, wie Sie mit Docker einen einfachen Container mit installierten Go-Dienstprogrammen erstellen, damit Sie schnell mit der Verwendung einer Go-Entwicklungsumgebung beginnen können. Lasst uns beginnen!

Frageninhalt

Ich habe die Docker-Funktionalität untersucht, um einfache Container mit einigen installierten Go-Dienstprogrammen zu erstellen. Ich muss ein Image mit installiertem Dienstprogramm gosecgovulncheck erstellen, damit ich sie mit dem Code im Container ausführen kann. Mein kleiner Versuch brachte folgende Ergebnisse:

# syntax=docker/dockerfile:1
from golang:1.19-alpine

workdir /app
env go111module=on

# copying my code to check
copy go.mod ./
copy go.sum ./
run go mod download
copy *.go ./

run go build -o /docker-gs-ping

run apk add --no-cache git
run go install github.com/securego/gosec/v2/cmd/gosec@latest
run go install golang.org/x/vuln/cmd/govulncheck@latest

expose 8080

cmd [ "gosec ./..." ]
Nach dem Login kopieren

Das Ausführen des Containers führt zu folgendem Fehler:

docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "gosec ./...": stat gosec ./...: no such file or directory: unknown.
ERRO[0000] error waiting for container: context canceled
Nach dem Login kopieren

Sieht so aus, als müsste ich den Pfad zum installierten Dienstprogramm angeben, aber ich bekomme es nicht zum Laufen.

Problemumgehung

Es handelt sich nicht um ein Pfadproblem. Das Problem ist Ihr Befehl in cmd 语句中使用的语法。您正在使用 cmd 语句的 json 格式; json 列表中的第一个参数是要运行的命令的名称。您已要求 docker 运行名为 gosec ./... der Docker-Datei, der natürlich nicht existiert.

Sie müssen es in mehrere Listenelemente aufteilen:

cmd [ "gosec", "./..." ]
Nach dem Login kopieren

Alternativ können Sie die Shell-Form des cmd-Befehls verwenden:

CMD  gosec ./...
Nach dem Login kopieren

Alles davon wird ausgeführt, wenn Sie den Container starten gosec .

Das obige ist der detaillierte Inhalt vonSo erstellen Sie einen einfachen Docker-Container mit installierten Go-Dienstprogrammen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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