到目前爲止,我已經對你的情況,我總是拿出一個Makefile做了所有的工作,其中,像你說的,從來都不是簡單的。儘管從未如此簡單,但我至少使用了兩種不同的方法,依賴於構建過程和開發環境之間所需的依賴關係。
最簡單的方法是,如你所說,只是一個Makefile扔你自己做的步驟。您可以使用Dockerfiles ARGuments來參數化二進制名稱,以便在構建期間不必修改Dockerfile。
這裏有我剛剛彌補了得到一個快速和骯髒的(工作)的Makefile你開始:
APP_IMAGE=group/example
APP_TAG=1.0
APP_BINARY=example
.PHONY: clean image binary
all: image
clean:
if [ -r $(APP_BINARY) ]; then rm $(APP_BINARY); fi
if [ -n "$$(docker images -q $(APP_IMAGE):$(APP_TAG))" ]; then docker rmi $(APP_IMAGE):$(APP_TAG); fi
image: binary
docker build --build-arg APP_BINARY=$(APP_BINARY) -t $(APP_IMAGE):$(APP_TAG) $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
binary: $(APP_BINARY)
$(APP_BINARY): main.go
go build -o [email protected] $^
這Makefile文件預計將在同一目錄中Dockerfile。
下面是一個最小的一個(工作):我已經測試
FROM alpine:3.5
ARG APP_BINARY
ADD ${APP_BINARY} /app
ENTRYPOINT /app
具有在同一個頂級項目目錄既是Makefile文件和Dockerfile一個main.go,如果你有一個main.go嵌套在一些內部目錄(「ROOT/cmd/bla」是常見的),那麼你應該改變「去建設」行來說明這一點。
雖然我一直在做這樣的事情了一段時間,現在我明白了(想想)你的問題我來看到一個專門的工具,特別是知道如何做到這一點可能是巨大的,有。具體的工具,模仿「去建立/獲取/安裝」,但可以建立泊塢窗圖片...所以在這裏你可以運行下面的命令來獲得一個二進制:
go install github.com/my/program
你也可以運行下面的命令來獲取一個簡單的碼頭圖像:
goi install github.com/my/program
這聽起來怎麼樣?有沒有類似的東西存在?我應該開始嗎?
爲什麼downvote? – krish7919