Docker / bin / sh introuvable avec le fichier go binaire

flybox:

Servi de nombreuses pages et forums et n'a pas trouvé de solution. J'ai le simple conteneur de docker avec le fichier exécutable .sh. Lorsque je le construis et l'exécute à partir de Windows, tout va bien. Essayez maintenant de le construire à partir d'Ubuntu 18.04 avec la version 19.03.5 de Docker.

Pour la reconstruction, utilisez le script .sh que j'exécute en tant que bash install.sh

go build -o main.sh ./main

docker stop stats
docker container rm stats
docker image rm stats
docker build -t stats .
docker run --name stats -p 8080:8080 stats

Mon Dockerfile est:

FROM alpine:3.10.1

ARG appPath="app"

RUN mkdir /app/
COPY main.sh /app/main.sh
RUN chmod +x /app/main.sh
COPY resources  /app/resources

RUN apk add --no-cache bash
WORKDIR /app

EXPOSE 8080
CMD /bin/bash -c 'ls' && /app/main.sh dev

L'appel de sortie 'install' est le suivant:

bash install.sh
stats
stats
Untagged: stats:latest
Sending build context to Docker daemon  38.98MB
Step 1/10 : FROM alpine:3.10.1
 ---> b7b28af77ffe
Step 2/10 : ARG appPath="app"
 ---> Using cache
 ---> 08baa7336701
Step 3/10 : RUN mkdir /app/
 ---> Using cache
 ---> fb9870e78322
Step 4/10 : COPY main.sh /app/main.sh
 ---> Using cache
 ---> 79bf713855e3
Step 5/10 : RUN chmod +x /app/main.sh
 ---> Using cache
 ---> 88bf70f9c6ec
Step 6/10 : COPY resources  /app/resources
 ---> Using cache
 ---> 2ebf95627a9e
Step 7/10 : RUN apk add --no-cache bash
 ---> Using cache
 ---> 39cd823e7f2f
Step 8/10 : WORKDIR /app
 ---> Using cache
 ---> 37e6fcea2d65
Step 9/10 : EXPOSE 8080
 ---> Using cache
 ---> 4250094c65f6
Step 10/10 : CMD /bin/bash -c 'ls' && /app/main.sh dev
 ---> Using cache
 ---> ed41a1efb15b
Successfully built ed41a1efb15b
Successfully tagged stats:latest
main.sh
resources
/bin/sh: /app/main.sh: not found

Je ne comprends pas ce qui ne va pas. main.sh est là. Si j'essaie d'exécuter, CMD /bin/bash -c 'ls' && bash main.sh devrecevez main.sh: main.sh: cannot execute binary file.

Quel est le problème et comment puis-je y remédier?

UPD:

Le fichier a été renommé comme étant binaire et ne devrait pas avoir .sh à la fin.

Et réessayé avec ce qui suit:

install.sh

#!/bin/bash
go build -o myapp ./main

docker stop stats
docker container rm stats
docker image rm stats
docker build -t stats .
docker run --name stats -p 8080:8080 stats

Dockerfile

FROM alpine:3.10.1

RUN mkdir /app/
COPY myapp /app/myapp
RUN chmod +x /app/myapp
COPY resources  /app/resources

RUN apk add --no-cache bash
WORKDIR /app

EXPOSE 8080
CMD /bin/bash -c 'ls' && ./myapp dev

La sortie était la suivante:

....    
Step 9/9 : CMD /bin/bash -c 'ls' && ./myapp dev
 ---> Running in 52fc24d26747
Removing intermediate container 52fc24d26747
 ---> 8d4f415e6dcd
Successfully built 8d4f415e6dcd
Successfully tagged stats:latest
myapp
resources
/bin/sh: ./myapp: not found

Essayé /app/myapp, ./myappet cela ne fonctionne pas.

tripleee:

Je suppose que le message d'erreur est trompeur et que le vrai problème est qu'une bibliothèque ou un autre composant d'exécution Go est absent de votre image Docker. Essayez de créer votre application de manière statique (ce qui signifie que tout ce dont elle a besoin sera regroupé dans le binaire).

CGO_ENABLED=0 go build -o myapp ./main

(Et oui, ne l'appelez pas main.shsi ce n'est pas un script shell. Unix s'en fiche, mais vous déroutez vos lecteurs humains. Et en fait, ne l'appelez pas ainsi même si c'est le cas. Vous n'avez pas besoin de savoir s'il greps'agit d'un binaire, d'un script shell ou d'un programme Python; la même convention a du sens pour vos propres outils.)

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Docker - /bin/sh : nodemon : introuvable

Impossible d'exécuter le fichier binaire GO dans les conteneurs Docker avec Linux Runner

start terminal (sh) from execv return error: / bin / sh: / bin / sh: impossible d'exécuter le fichier binaire

dotnet docker / bin / sh: 1: [dotnet ,: introuvable

Impossible d'exécuter un programme go dans docker / bin / sh: <program>: introuvable

Le texte binaire est introuvable dans un fichier binaire

Binaire Go installé introuvable dans le chemin sur Alpine Linux Docker

docker alpine / bin / sh script.sh introuvable

Fichier binaire Bitbake introuvable

Erreur Google Cloud Run : Invalid Command \"/bin/sh\": fichier introuvable lors du déploiement à partir de l'image Docker

/ bin / sh introuvable - spawnSync

Erreur d'image Docker: "/ bin / sh: 1: [python,: introuvable"

docker ubuntu / bin / sh: 1: locale-gen: introuvable

go build in docker: binaire inattendu dans / go / bin

Fichier .sh introuvable

Lire le fichier binaire avec Deno

Sh : fichier introuvable sur l'image Docker alpine

docker - sh: nodemon: introuvable

Erreur native React - react-native-xcode.sh: ligne 45: react-native: commande introuvable La commande / bin / sh a échoué avec le code de sortie 127

Comment écrire la commande docker avec /bin/sh et affecter le résultat à la variable ?

/bin/sh : 1 : compositeur : introuvable

/ bin / sh: @echo: commande introuvable

/ bin / sh: SET: commande introuvable

/ bin / sh: adb: commande introuvable

/ bin / sh: 1: gvm: introuvable

/ bin / sh: 1: gcloud: introuvable

/ bin / sh: cc: commande introuvable

startFabric.sh échoue avec la commande docker compose introuvable

Le script Docker COPY sh ne fonctionne pas (introuvable)

TOP liste

  1. 1

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  2. 2

    Comment imprimer le nombre d'observations dans un fichier externe - sélection avec où appliqué?

  3. 3

    Obtention d'une erreur lors de la tentative d'utilisation du serveur proxy dans Node.js / Puppeteer

  4. 4

    Quelle est la relation entre le modèle et le tableau ? C'est compliqué

  5. 5

    Comment utiliser plusieurs entrées dans une boucle?

  6. 6

    J'ai besoin de savoir si ces deux phrases sont les mêmes en programmation

  7. 7

    récupérer une valeur de clé spécifique à partir d'un tableau multidimensionnel

  8. 8

    Passer la taille d'un tableau 2D à une fonction ?

  9. 9

    Comment faire une requête HTTP GET manuellement avec netcat?

  10. 10

    Ajout de préférences de portlet dans Liferay 7

  11. 11

    Déverrouiller le bouton avant d'appeler une fonction

  12. 12

    Comment arrêter l'enregistrement d'une base de données jusqu'à ce qu'un code de validation soit accepté par e-mail dans C # WinForms

  13. 13

    Tableau PHP dans une table utilisant implode ()

  14. 14

    Accédez à docker.sock depuis l'intérieur d'un conteneur

  15. 15

    php ajouter et fusionner des données de deux tables

  16. 16

    PubNub: Quelle est la bonne façon d'enregistrer tous les messages publiés dans ma base de données

  17. 17

    Comment prévisualiser des fichiers dans une application Java?

  18. 18

    Dans matlab intégrer une fonction qui appelle une autre fonction

  19. 19

    Comment déterminer la progression lors de la lecture d'un fichier

  20. 20

    L'abonnement Python du kit AWS IoT SDK renvoie true mais le paramètre de rappel n'est pas appelé

  21. 21

    Comment accéder au pool de threads par défaut dans l'application Windows 10 C ++?

chaudétiquette

Archive