インターネット テクノロジーの継続的な発展に伴い、バックエンド サービスを作成するために golang を使用する企業が増えています。他の言語と比較して、golang は同時処理とパフォーマンスの最適化において大きな利点があります。パッケージ化とデプロイは、golang プロジェクトを効率的に管理するために重要な部分です。次に、この記事では golang を使用してパッケージ化およびデプロイする方法を紹介します。
1. パッケージ化に golang を使用する
Golang 自体には独自のパッケージ化ツールがあり、サードパーティのツールに依存する必要はありません。 golang をパッケージ化に使用するには、次の 2 つのコマンドを実行するだけです。
go build -o Output main.go
このうち -o パラメータは、出力実行可能ファイルを指定するために使用されます。ファイル名、main .go はコンパイルされる go ファイルです。
さらに、アプリケーションを異なるオペレーティング システムに展開する必要がある場合は、クロスコンパイルに CGO を使用できます。たとえば、Windows に展開する必要がある場合は、次のコマンドを実行できます:
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o Output.exe main.go
Among CGO_ENABLED 多くのライブラリが Windows 上で CGO を使用できないため、CGO を無効にすることを意味します。GOOS は、ターゲット オペレーティング システムが Windows であることを意味します。GOARCH は、ターゲット システムの CPU アーキテクチャが AMD64 であることを意味します。
2. パッケージ化に docker を使用する
golang には、コンテナ化において一定の利点もあります。パッケージ化とデプロイメントに Docker を使用すると、アプリケーションを依存する環境から分離できるため、アプリケーションの移植性と一貫性が確保されます。
まず、アプリケーションのビルドとデプロイのプロセスを記述する Dockerfile ファイルを作成する必要があります。例は次のとおりです:
FROM golang:1.12-alpine
COPY . /app
WORKDIR /app
RUN go build -o main .
EXPOSE 8080
CMD ["./main"]
その中で、FROM ステートメントはベース イメージを golang:1.12-alpine として指定するために使用され、COPY ステートメントは現在のディレクトリ内のすべてのファイルをアプリ ディレクトリにコピーするために使用され、WORKDIR ステートメントは に切り替えるために使用されます。アプリディレクトリ; RUN ステートメントは go build コマンドを実行してビルドするために使用されます; EXPOSE ステートメントはポートを公開するために使用されます; CMD ステートメントはアプリケーションを起動するために使用されます。
次に、次のコマンドを実行してパッケージ化します。
docker build -t myapp:latest .
このうち、-t パラメーターはイメージ名とイメージの指定に使用されます。バージョン番号 現在のディレクトリを表します。パッケージ化が完了したら、次のコマンドでコンテナを起動できます:
docker run -d -p 8080:8080 myapp:latest
このうち、-d パラメータは実行に使用されます。コンテナーをバックグラウンドで実行し、-p パラメーターを使用して、コンテナーのポート 8080 をホストのポート 8080 にマップします。
3. Kubernetes を使用したデプロイメント
Kubernetes は、コンテナ化されたアプリケーションのデプロイメント、拡張、管理を自動化するために使用できるオープンソースのコンテナ オーケストレーション ツールです。 Kubernetes を使用してデプロイすると、アプリケーションの信頼性と復元力が向上します。
まず、アプリケーションのデプロイメント実装を記述するために、deployment.yaml ファイルを記述する必要があります。例は次のとおりです:
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
selector:
matchLabels: app: myapp
replicas: 3
template:
metadata: labels: app: myapp spec: containers: - name: myapp image: myregistry/myapp:latest ports: - containerPort: 8080
ここで、apiVersion は、 resource、kind はリソース タイプを Deployment として表します。name フィールドはデプロイメント名を指定するために使用されます。selector フィールドは選択されるポッドを指定するために使用されます。replicas フィールドは作成する必要があるポッドの数を指定するために使用されます。 template フィールドはポッドのテンプレートを指定するために使用され、containers フィールドは 1 つ以上のコンテナを含めるのに使用され、image フィールドはコンテナ イメージを指定するために使用され、ports フィールドはコンテナがリッスンするポートを指定するために使用されます。
次に、次のコマンドを実行してデプロイします。
kubectl apply -fdeployment.yaml
-f パラメーターは、デプロイメント ファイルのパスを指定するために使用されます。デプロイメントが完了したら、次のコマンドを使用してデプロイメントのステータスを表示できます。
kubectl get pods
最後に、次のコマンドを使用してサービス オブジェクトを作成し、ポートを公開できます。外部ユーザーへのコンテナー:
kubectl公開デプロイメント myapp --type=LoadBalancer --name=myapp-service
その中で、 --type パラメーターはサービスのタイプを指定するために使用されます。 LoadBalancer は、サービスがクラウド ベンダーのロード バランサーを通じて外部に公開されていることを示します。 --name パラメーターは、サービス名を指定するために使用されます。
概要
この記事では、golang を使用してパッケージ化とデプロイメントを行う 3 つの方法、つまり、golang 独自のパッケージ化ツールを使用する方法、パッケージ化に docker を使用する方法、デプロイメントに Kubernetes を使用する方法を紹介します。これらの方法は基本的にさまざまなシナリオのニーズを満たすことができるため、golang プロジェクトを開発およびデプロイする際の参考になれば幸いです。
以上がパッケージ化とデプロイメントに golang を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。