다음과 같이 Go 애플리케이션을 구축하려고 합니다. main.go 파일은 cmd/app/main.go에 있습니다.
근데 달리려고 하면 docker build --no-cache .
和 docker 运行 <container_id>
.
덕분에 exec ./bin/app: 没有这样的文件或目录
실행을 테스트해 보았으며 go build -o ./bin/app ./cmd/app
和 ./bin/app
올바르게 작동합니다.
이것은 내 dockerfile입니다
으아악컨테이너에 접근하려고 합니다 docker run -it -t fyno/server/multi /bin/sh
감사합니다.
이 문제를 해결하는 방법은 무엇입니까?
우선 경로에 문제가 있어 No such file ordirectory 오류가 발생합니다.
최소한의 dockerfile
示例,并重命名了 app
二进制文件,这导致了混乱,因为它位于示例中的 app
디렉토리를 작성했습니다. 이제는 더 의미가 있기를 바랍니다.
두 번째로, dockerfile
에서 경로 부정확성을 수정한 후 go 바이너리를 실행하려고 할 때 더 미묘한 문제에 직면하게 됩니다: 찾을 수 없음, 왜냐하면 golang 빌더 이미지가 debian glibc 2.31-13+ deb11u5 2.31을 사용하고 있기 때문입니다. 러너 이미지는 musl libc(x86_64)를 사용합니다.
버전 1.2.2.
가장 쉬운 수정 방법은 컴파일을 위해 빌드 타임에 cgo_enabled=0
。如果你确实想使用 cgo
를 설정하는 것입니다. 이와 관련하여 호환되는 빌더 및 러너 이미지를 찾으세요.
비슷한 문제에 대한 몇 가지 대안과 해결 방법이 여기에 제공되어 있습니다.
셋째, 댓글에서 .env
文件,因此我还在 mvp 中添加了一个简单的读取显示,用于使用 docker run --env ...
주입된 환경 변수에 대해서도 언급하셨습니다.
dockerfile:
main.go:
빌드 및 실행:
으아악 으아악위 내용은 docker 다단계 빌드를 사용하여 go 바이너리를 실행할 수 없습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!