gpt4 book ai didi

docker - 在 Docker 中使用私有(private)模块构建 Go 应用程序

转载 作者:行者123 更新时间:2023-12-01 20:22:10 26 4
gpt4 key购买 nike

我正在尝试在依赖私有(private)子模块的 docker 容器中构建一个 go 项目。
我希望 --mount=type=ssh会将我的 ssh 凭据传递给容器并且它会工作。目前我可以在本地构建 GOPRIVATE变量集和 git config更新。
这是我的相关Dockerfile目前

# syntax = docker/dockerfile:experimental

FROM golang:1.14.3-alpine AS build
RUN apk add --no-cache git \
openssh-client \
ca-certificates

WORKDIR /src
ENV GIT_TERMINAL_PROMPT=1
ENV GOPRIVATE="gitlab.com/company_foo"
RUN git config --global url."ssh://git@gitlab.com".insteadOf "https://gitlab.com"



# Authorize SSH Host
# Skip Host verification for git
RUN mkdir -p /root/.ssh && \
chmod 0700 /root/.ssh && \
ssh-keyscan gitlab.com > /root/.ssh/known_hosts &&\
chmod 644 /root/.ssh/known_hosts && touch /root/.ssh/config \
&& echo "StrictHostKeyChecking no" > /root/.ssh/config

COPY go.mod go.sum .
RUN --mount=type=ssh mkdir -p /var/ssh && \
GIT_SSH_COMMAND="ssh -o \"ControlMaster auto\" -o \"ControlPersist 300\" -o \"ControlPath /var/ssh/%r@%h:%p\"" \
go mod download
COPY . .
RUN --mount=type=cache,target=/root/.cache/go-build go build -o api-server ./cmd/api-server
RUN --mount=type=cache,target=/root/.cache/go-build go build -o migrations ./cmd/migrations
我也试过添加 CI_JOB_TOKEN
RUN echo -e "machine gitlab.com\nlogin gitlab-ci-token\npassword ${CI_JOB_TOKEN}" > ~/.netrc
但这也没有用。也许我做错了。
所有这些都会导致失败:
 revision v0.0.3: unknown revision v0.0.3
与我们的一个私有(private) repo 有关。
任何建议将不胜感激。
我完全迷路了。

最佳答案

这对我有用。

FROM golang:1.14
ARG USERNAME=user1
ARG PASSWORD=secret

WORKDIR /app
ADD . .
ENV GOPRIVATE=private.git.local/*
RUN echo "machine private.git.local login $USERNAME password $PASSWORD" > ~/.netrc

RUN go build -o testGo main.go
CMD ["/app/testGo"]

关于docker - 在 Docker 中使用私有(private)模块构建 Go 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62960934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com