我用 golang 設置了一個簡單的服務器:package mainimport ( "golang-server/database" "golang-server/helper" "log" "net/http")func main() { database.Connect() port := helper.GetPort() SetupRoutes() log.Printf("connect to http://localhost:%s/ for GraphQL playground", port) log.Fatal(http.ListenAndServe(":"+port, router))}這是我的 dockerfile 的樣子:FROM golang:1.18WORKDIR $GOPATH/srcCOPY . .RUN go mod downloadRUN go build -o /golang-serverEXPOSE 8080CMD ["golang-server"]我在主目錄中運行這些 docker 命令:docker build . -t golang-server docker run --network=golang-server --name=golang-server golang-server但是,當我運行時出現(xiàn)此錯誤:docker:來自守護進程的錯誤響應:創(chuàng)建墊片任務失?。篛CI 運行時創(chuàng)建失敗:runc 創(chuàng)建失?。簾o法啟動容器進程:exec:“golang-server”:在 $PATH 中找不到可執(zhí)行文件:未知。我應該如何設置 dockerfile 才能成功部署到 docker?
1 回答

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
問題與您在 Dockerfile 中的最后一行有關CMD ["golang-server"]。當你把它放在那里時,系統(tǒng)(在容器內部)試圖在你的$PATH變量中找到一個名為golang-server.
要解決此問題,一旦您在( )CMD ["/golang-server"]中構建應用程序,您只需將 Dockerfile 中的最后一行編輯為。最終的 Dockerfile 應該是這樣的:/RUN go build -o /golang-server
FROM golang:1.18
WORKDIR $GOPATH/src
COPY . .
RUN go mod download
RUN go build -o /golang-server
EXPOSE 8080
CMD ["/golang-server"]
- 1 回答
- 0 關注
- 173 瀏覽
添加回答
舉報
0/150
提交
取消