[解決済み] docker の多段ビルド Go イメージ - x509: 証明書は不明な機関によって署名されました。
質問
を構築しようとしています。 行く の画像は 私企業 ネットワーク利用 docker-multi-stage-build :
FROM golang:latest as builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN GO111MODULE="on" CGO_ENABLED=0 GOOS=linux go build -o main ${MAIN_PATH}
FROM alpine:latest
LABEL maintainer="Kozmo"
RUN apk add --no-cache bash
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
を取得し
x509: certificate signed by unknown authority
エラー
Step 1/13 : FROM golang:latest as builder
---> 2421885b04da
Step 2/13 : WORKDIR /app
---> Using cache
---> 6555644dbd16
Step 3/13 : COPY go.mod go.sum ./
---> 55d45a30f492
Step 4/13 : RUN go mod download
---> Running in 88c21c6b4fab
go: github.com/dgrijalva/jwt-go/[email protected]: Get "https://proxy.golang.org/github.com/dgrijalva/jwt-go/v4/@v/v4.0.0-preview1.mod": x509: certificate signed by unknown authority
The command '/bin/sh -c go mod download' returned a non-zero code: 1
make: *** [docker] Error 1
で答えを探してみました。
X509: 不明な機関によって署名された証明書(Dockerコンテナ内でGoアプリを実行する場合)
, docker build: github の公開リポジトリを取得できない、x509: 不明な機関によって署名された証明書
そして x509証明書は、不明な機関によって署名された - go-pingdom。
と表示されますが、結果は同じです。
を追加すると❗️。
-insecure
フラグ
...
RUN go env -w GOPROXY=direct GOFLAGS="-insecure"
COPY go.mod go.sum ./
...
から
Dockerfile
????????
unrecognized import path
エラー
ラップ
前
x509
のエラーと
到達不能
にパッケージ変更。
golang.org/x/crypto
go: golang.org/x/[email protected]: unrecognized import path "golang.org/x/crypto": https fetch: Get "https://golang.org/x/crypto?go-get=1": x509: certificate signed by unknown authority
何が問題なのでしょうか❓?
(の場合、証明書と認証に問題があることは理解しています)。
git
依存関係を取得しますが、イメージの構築プロセスをより一般化するようにします)
解決方法は?
git
用途
curl
にアクセスするために
https
サーバにインポートする必要があるため、証明書を
CA store
を使用します。
回避策としては、環境変数
GIT_SSL_NO_VERIFY=1
をAgentの環境変数に追加してください。
を使用した場合、うまくいきません。
go get
または
go mod download
????.
システムCAストアに証明書をインポートするには、OSによって異なりますが、以下の手順で行います。
openssl
.
例えば
FROM golang:latest as builder
RUN apt-get update && apt-get install -y ca-certificates openssl
ARG cert_location=/usr/local/share/ca-certificates
# Get certificate from "github.com"
RUN openssl s_client -showcerts -connect github.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/github.crt
# Get certificate from "proxy.golang.org"
RUN openssl s_client -showcerts -connect proxy.golang.org:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt
# Update certificates
RUN update-ca-certificates
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN GO111MODULE="on" CGO_ENABLED=0 GOOS=linux go build -o main ${MAIN_PATH}
FROM alpine:latest
LABEL maintainer="Kozmo"
RUN apk add --no-cache bash
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]
docker image build
出力 ?
...
Step 5/19 : RUN openssl s_client -showcerts -connect github.com:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/github.crt
---> Running in bb797e26d4b4
Removing intermediate container bb797e26d4b4
---> 6c68ddafd884
Step 6/19 : RUN openssl s_client -showcerts -connect proxy.golang.org:443 </dev/null 2>/dev/null|openssl x509 -outform PEM > ${cert_location}/proxy.golang.crt
---> Running in 61f59939d75e
Removing intermediate container 61f59939d75e
---> 72d2b03b11e6
Step 7/19 : RUN update-ca-certificates
---> Running in 6cf9aa248776
Updating certificates in /etc/ssl/certs...
2 added, 0 removed; done. ???????? 'certificates updated'
...
Step 8/18 : COPY go.mod go.sum ./
---> 436263b76050
Step 9/18 : RUN go mod download ???????? 'works fine'
---> Running in 2387c78147db
Removing intermediate container 2387c78147db
---> a37c05c2b531
Step 10/18 : COPY . .
---> 01b49c388f59
...
関連
-
[解決済み】Docker - 0.0.0.0:4000 のバインドに失敗しました: ポートは既に割り当てられています。
-
[解決済み】Dockerのビルドコンテキスト外のファイルをインクルードする方法とは?
-
[解決済み】docker: ドライバがエンドポイントウェブサーバの外部接続のプログラミングに失敗しました。
-
[解決済み】D-Bus接続の取得に失敗しました。操作が許可されていません
-
[解決済み] ドッカーイメージのアイコンを作成する
-
[解決済み] Docker Unknown フラグ --mount
-
[解決済み] DockerでPillowを使用する
-
エラー:入力デバイスはTTYではありません。
-
ドッカーコンテナの状態がExitと表示される(1)
-
[解決済み] Dockerでイメージのクリーンビルドを強制する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Docker Networking が無効になっています。警告: IPv4 転送が無効になっています。ネットワーキングは機能しません
-
[解決済み] docker: ドライバがエンドポイントウェブサーバの外部接続のプログラミングに失敗しました。
-
[解決済み] docker ps' と 'docker-compose ps' コマンドで異なる結果が表示される
-
[解決済み] Dockerfileの "RUN chmod "が有効でない。
-
[解決済み] ドッカーコンテナの終了ステータス255は何を意味するのですか?
-
企業向けWeChatアラート監視のためのPrometheus+Grafana+AlertmanagerのDockerインストール
-
bashでの解決方法 : docker :コマンドが見つかりません。
-
接続中にDocker useエラーが発生しました。このエラーは、Docker デーモンが実行されていないことを示す可能性があります。
-
ドッカーコンテナの状態がExitと表示される(1)
-
UbuntuでDockerインストールしたgogsは、サービスを時々再起動するとアクセスできなくなります。