Maison >développement back-end >Golang >Comment créer un conteneur Docker simple avec les utilitaires Go installés

Comment créer un conteneur Docker simple avec les utilitaires Go installés

PHPz
PHPzavant
2024-02-11 16:24:11856parcourir

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

L'éditeur PHP Zimo vous présentera comment créer un conteneur Docker simple et y installer les utilitaires Go. Docker est une plate-forme de conteneurisation populaire qui aide les développeurs à empaqueter des applications avec leurs dépendances pour un déploiement et une exécution faciles dans différents environnements. Go est un langage de programmation rapide et efficace doté de nombreux excellents utilitaires disponibles. Cet article vous montrera comment utiliser Docker pour créer un conteneur simple avec les utilitaires Go installés afin que vous puissiez rapidement commencer à utiliser un environnement de développement Go. commençons!

Contenu de la question

J'ai exploré la fonctionnalité Docker afin de créer des conteneurs simples avec quelques utilitaires Go installés. Je dois créer une image avec l'utilitaire gosecgovulncheck installé afin de pouvoir les exécuter sur le code dans le conteneur. Ma petite tentative a produit les résultats suivants :

# 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 ./..." ]

L'exécution du conteneur entraîne l'erreur : 

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

On dirait que je dois spécifier le chemin d'accès à l'utilitaire installé, mais je n'arrive pas à le faire fonctionner

Solution de contournement

Ce n'est pas un problème de chemin, c'est un problème de chemin. Le problème est votre commande dans cmd 语句中使用的语法。您正在使用 cmd 语句的 json 格式; json 列表中的第一个参数是要运行的命令的名称。您已要求 docker 运行名为 gosec ./... du dockerfile qui bien sûr n'existe pas.

Vous devez le diviser en plusieurs éléments de liste :

cmd [ "gosec", "./..." ]

Vous pouvez également utiliser le formulaire shell de la commande cmd :

CMD  gosec ./...

N'importe lequel d'entre eux s'exécutera lorsque vous démarrerez le conteneur gosec .

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