golang静的バイナリのDockerイメージをビルド、デプロイ、プッシュする

krish7919:

解決する簡単な構成の問題の解決策を探しています。それはかなり長い間私を悩ませてきました。:)

私はgithubに静的なバイナリを提供し、godepsを使用するgolangプロジェクトを持っています。

ここでgodep go install ...、gitクローンとdockerコンテナーがこの新しくビルドされたバイナリからローカルでビルドされた後にコマンドを実行できることを確認したいと思います。

オプションとして、ユーザーはそれをDockerハブまたはプライベートリポジトリに適宜プッシュできる必要があります。

Makefileの使用を考えていますが、複雑すぎるようです(gopathを設定してからgodepビルドを作成し、バイナリが配置されている場所を指すようにDockerfileを動的に変更してから、Dockerビルドを作成します)。

それを行う簡単な方法はありますか?

パブロ・ラロニ:

これまでのところ、私があなたの状況にあったとき、私はいつも、すべての作業を行うためのMakefileを思い付きました。決して簡単なことではありませんが、ビルドプロセスと開発環境の間に必要な依存関係のレベルに応じて、少なくとも2つの異なるアプローチを使用してそれを実行しました。

最も簡単な方法は、あなたが言うように、Makefileに自分で行うステップを投げるだけです。ビルド中にDockerfileを変更する必要がないように、Dockerfiles ARGumentsを使用してバイナリ名をパラメーター化できます。

ここに、私があなたを始めるために作った、速くて汚い(動作する)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 $@ $^

そのMakefileは、Dockerfileと同じディレクトリにあると想定しています。

これは最小限のものです(機能します):

FROM alpine:3.5
ARG APP_BINARY
ADD ${APP_BINARY} /app
ENTRYPOINT /app

main.goをMakefileとDockerfileの両方と同じ最上位プロジェクトディレクトリに置くことをテストしました。main.goがディレクトリ内にネストされている場合( "ROOT / cmd / bla"が一般的です)、次にこれを考慮して、「ビルド」行を変更する必要があります。

私はしばらくそのようなことをしてきましたが、今あなたの質問を見て(そして考えて)いるので、具体的にこれを行う方法を知っている専用のツールが素晴らしいかもしれないことがわかりました。具体的には、「go build / get / install」を模倣しているが、Dockerイメージをビルドできるツールです。そのため、次のコマンドを実行してバイナリを取得できます。

go install github.com/my/program

次のコマンドを実行して、シンプルなドッカーイメージを取得することもできます。

goi install github.com/my/program

どうですか?そのようなものは存在しますか?始めましょうか?

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Jenkins Golang宣言型パイプライン:DockerイメージをビルドしてDocker Hubにプッシュする

分類Dev

モジュールのプライバシーのヒントをキャッチするPython用の静的コードアナライザー

分類Dev

DockerイメージファイルをビルドしてVstをプッシュする方法

分類Dev

ビルドサーバーからDockerイメージをデプロイ/実行する方法

分類Dev

Dockerコンテナーを使用したGolang Webアプリの静的ファイルのデプロイ

分類Dev

ビルドされたGolangバイナリのDockerイメージ

分類Dev

ビルドされたReactアプリのCloudFoundryへの静的ファイルデプロイメントは、ビルドパックを使用しても、ノードデプロイメントであると考えているようです

分類Dev

MavenはDockerイメージのみのデプロイとプッシュをスキップします

分類Dev

Docker Alpineイメージの静的Goバイナリをビルドするにはどうすればよいですか?

分類Dev

DockerイメージをデプロイするためのKubernetesポッドのメモリの指定

分類Dev

JenkinsビルドジョブからLinuxデプロイメントサーバーにdocker-composeファイルをデプロイする方法は?

分類Dev

ラムダを使用してDockerイメージをビルドしてAWSECRにプッシュする

分類Dev

Maven:子プロジェクトのDockerイメージをビルドする

分類Dev

フェードイン効果のある水平ナビゲーションバーにCSS3ドロップダウンメニューを作成する

分類Dev

プレロリポップデバイスのサーキュラーリビールを作成する

分類Dev

プロビジョナーのデフォルト値をオーバーライドする方法は?

分類Dev

プロビジョナーのデフォルト値をオーバーライドする方法は?

分類Dev

GDイメージリサイザーをバイキュービックシャープナーを備えた同等のImageMagickに変換します

分類Dev

アクションバーのドロップダウンナビゲーションメニューからアイテムを削除する方法

分類Dev

Androidアプリケーションのナビゲーションドロワーメニューにインデントを配置する方法

分類Dev

PhoneGapを使用してモバイルアプリを設計するためのビジュアル(ドラッグアンドドロップ)ツール

分類Dev

Azuredevopsはaksへのプッシュイメージをビルドします

分類Dev

プライマリ水平ナビゲーションバーのすぐ下にセカンダリメニューをプッシュする方法は?

分類Dev

サーバーにAngularフルスタックアプリをデプロイする際のクロスドメインオリジンの問題

分類Dev

XamarinFormsアプリケーションのビルド構成に基づいてiOSスプラッシュページイメージを交換する方法

分類Dev

ペルシャ語、ヘブライ語デバイスのナビゲーションドロワーの左側にメニューアイコンを配置するベストプラクティスは?

分類Dev

メニューボタンがクリックされるとすぐに、モバイルナビゲーションバーメニューの背景色を透明からインディゴにワードプレスで変更するにはどうすればよいですか?

分類Dev

自己署名証明書を使用してローカルDockerイメージをプライベートリポジトリにプッシュする

分類Dev

Jenkins(Dockerコンテナー内)パイプラインでDockerイメージをビルドする

Related 関連記事

  1. 1

    Jenkins Golang宣言型パイプライン:DockerイメージをビルドしてDocker Hubにプッシュする

  2. 2

    モジュールのプライバシーのヒントをキャッチするPython用の静的コードアナライザー

  3. 3

    DockerイメージファイルをビルドしてVstをプッシュする方法

  4. 4

    ビルドサーバーからDockerイメージをデプロイ/実行する方法

  5. 5

    Dockerコンテナーを使用したGolang Webアプリの静的ファイルのデプロイ

  6. 6

    ビルドされたGolangバイナリのDockerイメージ

  7. 7

    ビルドされたReactアプリのCloudFoundryへの静的ファイルデプロイメントは、ビルドパックを使用しても、ノードデプロイメントであると考えているようです

  8. 8

    MavenはDockerイメージのみのデプロイとプッシュをスキップします

  9. 9

    Docker Alpineイメージの静的Goバイナリをビルドするにはどうすればよいですか?

  10. 10

    DockerイメージをデプロイするためのKubernetesポッドのメモリの指定

  11. 11

    JenkinsビルドジョブからLinuxデプロイメントサーバーにdocker-composeファイルをデプロイする方法は?

  12. 12

    ラムダを使用してDockerイメージをビルドしてAWSECRにプッシュする

  13. 13

    Maven:子プロジェクトのDockerイメージをビルドする

  14. 14

    フェードイン効果のある水平ナビゲーションバーにCSS3ドロップダウンメニューを作成する

  15. 15

    プレロリポップデバイスのサーキュラーリビールを作成する

  16. 16

    プロビジョナーのデフォルト値をオーバーライドする方法は?

  17. 17

    プロビジョナーのデフォルト値をオーバーライドする方法は?

  18. 18

    GDイメージリサイザーをバイキュービックシャープナーを備えた同等のImageMagickに変換します

  19. 19

    アクションバーのドロップダウンナビゲーションメニューからアイテムを削除する方法

  20. 20

    Androidアプリケーションのナビゲーションドロワーメニューにインデントを配置する方法

  21. 21

    PhoneGapを使用してモバイルアプリを設計するためのビジュアル(ドラッグアンドドロップ)ツール

  22. 22

    Azuredevopsはaksへのプッシュイメージをビルドします

  23. 23

    プライマリ水平ナビゲーションバーのすぐ下にセカンダリメニューをプッシュする方法は?

  24. 24

    サーバーにAngularフルスタックアプリをデプロイする際のクロスドメインオリジンの問題

  25. 25

    XamarinFormsアプリケーションのビルド構成に基づいてiOSスプラッシュページイメージを交換する方法

  26. 26

    ペルシャ語、ヘブライ語デバイスのナビゲーションドロワーの左側にメニューアイコンを配置するベストプラクティスは?

  27. 27

    メニューボタンがクリックされるとすぐに、モバイルナビゲーションバーメニューの背景色を透明からインディゴにワードプレスで変更するにはどうすればよいですか?

  28. 28

    自己署名証明書を使用してローカルDockerイメージをプライベートリポジトリにプッシュする

  29. 29

    Jenkins(Dockerコンテナー内)パイプラインでDockerイメージをビルドする

ホットタグ

アーカイブ