>백엔드 개발 >Golang >Docker 이미지 실행 golang 실행 파일: exec /usr/local/go/bin/go: exec 형식 오류

Docker 이미지 실행 golang 실행 파일: exec /usr/local/go/bin/go: exec 형식 오류

PHPz
PHPz앞으로
2024-02-09 10:18:29775검색

Docker 镜像执行 golang 可执行文件:exec /usr/local/go/bin/go: exec 格式错误

php 편집기 Apple에서는 Docker를 사용할 때 "Docker 이미지 실행 golang 실행 파일: exec /usr/local/go/bin/go: exec 형식 오류"라는 일반적인 오류가 발생할 수 있습니다. 이 오류는 일반적으로 이미지의 golang 실행 파일이 올바르게 실행되지 않아 발생합니다. 이 문제를 해결하는 방법은 golang 실행 파일의 권한 확인, 실행 파일 접근 가능 여부 확인, 실행 파일 경로가 올바른지 확인 등 여러 가지가 있습니다. 이 문제를 해결하면 Golang 실행 파일이 Docker에서 올바르게 실행되는지 확인하고 코드 개발의 효율성과 안정성을 향상시킬 수 있습니다.

질문 내용

go 실행 파일을 다른 컴퓨터에서 실행하려면 대상 플랫폼을 지정해야 한다는 것을 알고 있습니다. 저는 m1 칩을 사용하여 Apple 컴퓨터에서 도커 이미지를 만들고 있습니다.

dockerfile

으아악

출력을 빌드한 후 컨테이너를 검사하므로 작동하는 것 같습니다

으아악

그런데 지금 사용해보면 docker-compose 在 linux 服务器上启动映像时,出现错误: exec /usr/local/go/bin/go: exec format error

docker-compose.yml

으아악

저는 Docker를 처음 접했기 때문에 여기서 매우 분명한 것을 놓치고 있는 것 같습니다.

해결 방법

우선 amd64 바이너리를 성공적으로 빌드했음을 확인할 수 있으므로 이는 go 문제가 아닙니다.

amd64 Linux 시스템에서 이미지를 실행하면 보고한 것과 같은 오류가 발생하지 않습니다. 이를 고려하여 docker-compose.yaml:

으아악

달릴 때 docker-compose up 다음이 표시됩니다.

으아악

이것은 workdir /app,这使得 app 成为映像中的当前工作目录,但您已将二进制文件安装为 /foo을 설정했기 때문에 발생합니다. 필요한 것:

  • 올바른 위치를 참조하려면 cmd를 변경하세요.

    으아악

    또는...

  • 다음 위치에 바이너리 설치: /app 으아악

이러한 변경 사항을 적용하면 이미지가 예상대로 작동합니다.

위 내용은 Docker 이미지 실행 golang 실행 파일: exec /usr/local/go/bin/go: exec 형식 오류의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제