1 回答

TA貢獻1777條經驗 獲得超10個贊
您有多個問題,Dockerfile
我docker-compose.yml
無法復制您所看到的問題(但您的設置對我也不起作用)。我看到的一些問題是:
COPY . /docker-go
會將當前文件夾(包括子文件夾)復制到圖像中/docker-go/
。這將產生一個文件夾/docker-go/app
。該文件夾的存在意味著go build -v -o /docker-go/app .
將可執行文件存儲為/docker-go/app/shipping-go
(您正在嘗試執行文件夾)。您的意圖是讓可執行文件位于其中,
/docker-go
但您隨后使用掛載 (./:/docker-go
) 隱藏了該文件夾。根據文檔“如果您綁定掛載到容器上的非空目錄中,該目錄的現有內容將被綁定掛載遮蓋。”。您的
start.sh
(問題中未顯示)沒有啟動可執行文件(請參閱文檔)。在
main.go
(問題中也未顯示)替換router.Run("127.0.0.1:8080")
為router.Run(":8080")
. 監聽127.0.0.1
意味著只接受本地連接;在容器內,這意味著僅來自容器本身的連接。
這是一個可以讓你繼續前進的工作設置(這可能不是最佳的,但應該提供一個起點,使你能夠進一步試驗)。請注意,您需要先進行上述更改main.go
。
文件
FROM golang:1.18
WORKDIR /docker-go
# Note: A better solution would be to copy an existing go.mod into the image
RUN go mod init shipping-go
COPY ./app/main.go ./
# Determine required modules and download them
RUN go mod tidy
RUN go build -v -o /docker-go/app
RUN chmod +x /docker-go/app
docker-compose.yml
version: "3.7"
services:
go-web:
build:
dockerfile: Dockerfile
restart: 'no'
ports:
- "8080:8080"
command: ["./app"]
- 1 回答
- 0 關注
- 318 瀏覽
添加回答
舉報