Golang を使用してプログラムを作成し、実稼働環境にデプロイする場合、パッケージ化は非常に重要な手順です。適切にパッケージ化すると、依存関係の問題を回避し、展開を迅速化し、不要なトラブルを減らすことができます。この記事では、Golang パッケージャーの使用方法について説明します。
1. Go の実行ファイル形式を理解する
パッケージングを始める前に、まず Go の実行ファイル形式を理解します。 Go はクロスコンパイルをサポートしています。つまり、Linux、Windows、Mac OS などのさまざまなプラットフォーム上のアプリケーションをローカルでコンパイルできるため、Go の実行可能ファイル形式は 2 つのタイプに分けられます:
さまざまなオペレーティング システムに対応するバイナリを生成する必要があるため、これを理解することはパッケージ化にとって重要です。
2. go build コマンドを使用してパッケージ化します
パッケージ化する前に、Golang プログラムのコードを記述する必要があります。次に、次のコマンドを使用してパッケージ化します。
go build -o outputName
このコマンドは、現在のフォルダー内のすべての .go
ファイルをバイナリ実行可能ファイルにコンパイルし、outputName
ファイルに出力します。
たとえば、プログラム ファイル main.go
がある場合、このファイルが存在するディレクトリに移動して、次のコマンドを実行できます:
go build -o main
This main
の実行可能ファイルという名前のファイルが生成されます。
ただし、このコマンドは実行可能ファイルをローカルでコンパイルすることしかできないため、他のマシンにデプロイすると依存関係の問題が発生する可能性があります。したがって、より専門的な梱包方法を使用する必要があります。
3. クロスコンパイルとパッケージ化には gox を使用します
gox は、複数のオペレーティング システムおよび CPU アーキテクチャ上で Go アプリケーションをクロスコンパイルするために使用されるオープン ソース ツールです。 gox を使用すると、さまざまなオペレーティング システムの実行可能ファイルを一度にパッケージ化し、実行中のファイルを統合できます。
gox をインストールする前に、まず dep ツールをインストールする必要があります (dep は Go のパッケージ マネージャーです)。インストール方法は次のとおりです:
go get -u github.com/golang/dep/cmd/dep
インストールが完了したら、次のコマンドを使用して、プロジェクトの依存関係を定義します。
dep init
次に、gox ツールをインストールします。次のコマンドを実行するだけです:
go get -u github.com/mitchellh/gox
インストールが完了したら、パッケージ化するためにプロジェクトのルート ディレクトリで次のコマンドを実行できます:
gox -osarch="目标操作系统和 CPU 架构" -output="输出目录/文件名" -ldflags "-s -w"
このうち、-osarch
パラメータを使用します。コンパイルするプラットフォームを指定します。-output
パラメータは、出力ディレクトリとファイル名を指定するために使用します。複数のオペレーティング システムに対して異なる名前を出力できます。-ldflags
リンカーフラグを指定するために使用され、生成されるバイナリファイルを小さくできます。
たとえば、Linux、Windows、Mac OS の 3 つのプラットフォーム用の実行可能ファイルをパッケージ化する場合、次のコマンドを実行できます。
gox -osarch="linux/amd64 windows/amd64 darwin/amd64" -output="build/{{.OS}}-{{.Arch}}/AppName" -ldflags "-s -w"
は 3 つのプラットフォーム用の実行可能ファイルを生成し、これらを、オペレーティング システム名と CPU アーキテクチャで名前を付けたフォルダー内の build
ディレクトリに置きます。
4. Docker コンテナ パッケージングを使用する
Docker は強力なコンテナ化ソリューションであり、Docker コンテナ内でアプリケーションを実行および構築できるため、クロスコンパイルがより便利になります。 Docker パッケージを使用すると、マルチバージョン サポートの問題を解決できます。
まず、Docker をインストールする必要があります。対応するインストール プログラムは、Docker 公式 Web サイトからダウンロードできます。
インストールが完了したら、コンパイル環境とオペレーティング システムのバージョンを指定する Dockerfile ファイルを作成できます。以下は簡単な例です:
# 设置基础镜像 FROM golang:alpine as build # 将工作目录切换至 /app 下 WORKDIR /app # 拷贝代码到镜像中 COPY . . # 编译应用程序 RUN go build -o app # 部署阶段 FROM alpine # 可执行文件拷贝到新镜像 COPY --from=build /app/app /app/ # 暴露端口 EXPOSE 3000 # 运行程序 CMD ["/app/app"]
この Dockerfile には 2 つのフェーズが含まれています:
build
フェーズ: Alpine イメージに基づいて、作業ディレクトリを # に切り替えます。 ##/app ディレクトリに移動し、コンパイル用にコードをイメージにコピーし、最後にバイナリ実行可能ファイル
app を生成します。
ステージ: Alpine イメージに基づいて、
build ステージによって生成された実行可能ファイル
app をコンテナーにコピーし、ポートを指定してプログラムを実行します。
docker build -t image_name .このうち、
image_name はパッケージ化されたイメージ名、
. はパッケージ化されたイメージ名を表します。カレントディレクトリ Dockerfile やその他のファイルが保存される場所です。
docker run -p 3000:3000 -d image_nameこのうち、
-p はポート マッピングを指定するために使用され、
-d は、コンテナーをバックグラウンドで実行することを意味します。
以上がgolang をパッケージ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。