この記事では、GoLang Web プログラムの作成や Linux でのパッケージのコンパイルに関する問題など、Docker イメージに基づいた Go プロジェクトのデプロイに関する関連知識を提供します。
- Go クロスコンパイルの基本
- Docker の基本
- Dockerfile カスタム イメージの基本
- docker-compose オーケストレーション ファイル作成の基本
Mac環境で開発・テストを行ったので、Windowsの場合は多少の違いはあるかもしれませんが、大きな問題はないと思います。
1. 依存環境- Docker
次の内容を含む新しい
main.go ファイルを作成します:
package mainimport ( "fmt" "log" "net/http")func sayHello(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "hello world")}func main() { http.HandleFunc("/", sayHello)//注册URI路径与相应的处理函数 log.Println("【默认项目】服务启动成功 监听端口 80") er := http.ListenAndServe("0.0.0.0:80", nil) if er != nil { log.Fatal("ListenAndServe: ", er) }}3. Linux でプログラム パッケージにコンパイルしますMac で開発しましたgo クロスコンパイルを使用する必要があります。クロスコンパイルに慣れていない場合は、ドキュメントを確認するか、以下のコマンドを直接コピーしてコンパイルできます。
Docker で実行したいと考えています。基本的な
golang イメージが実行されているため、
i386 プロセッサと互換性のあるプログラムにコンパイルする必要があります。 。
sudo env GOOS=linux GOARCH=386 go build main.goこのコンパイルが完了すると、ローカルに
main プログラムがもう 1 つ作成されます。当面はそのままにしておきます。
Dockerfile を使用して Go プログラムのイメージをカスタマイズします
新しいフォルダーを作成し、その中に新しい Dockerfile ファイルを作成します。次に、その中に ##app
、script
という 2 つのファイルを新規作成します。前の手順の main
プログラムを app
フォルダーに置き、script
に新しい build.sh
スクリプト ファイルを作成します。ファイルの内容については、後で説明しますので、今は気にしないでください。 具体的なファイル構造は以下の通りです。
. ├── Dockerfile ├── app │ └── main └── script └── build.sh
次は、Dockerfile
ファイルの内容です。最初に内容をコード化します: <pre class='brush:php;toolbar:false;'>FROM golang
MAINTAINER 青羽
WORKDIR /go/src/COPY . .EXPOSE 80CMD ["/bin/bash", "/go/src/script/build.sh"]</pre>
ここに説明があります:
- FROM
- は統合元のイメージです。私たちの go プログラムは、直接使用できる
golang
のようなイメージを公式に提供しています。 MAINTAINER - はこの名前を維持します。
- 作業ディレクトリ。
- これは、すべてのローカル ファイルを作業ディレクトリにコピーするコピー コマンドです。
- これは相手が開発したポートです。デフォルトではポート 80 を開きます。これは実際の状況に応じて変更できます。
- でパラメータを実行する このように書いたコマンドは、イメージの開始時にスクリプト
script/build.sh
を実行するためのもので、このスクリプトには go プログラムを開始するコマンドが含まれています。ここにコンテンツを貼り付けます:
#!/usr/bin/env bash cd /go/src/app/ && ./main
この 2 行だけです。
5. 独自のイメージをコンパイルする
これは
Docker の知識に属するため、コマンドを貼り付けます。 <pre class='brush:php;toolbar:false;'>docker build -t go-web .</pre>
- golang
- イメージがローカルで利用できない場合は、まず公式のイメージ ライブラリに移動してイメージをプルし、次にコンパイルします。ただ静かに彼を待ってください。
- このパラメータは、最後にコンパイルされたイメージの名前です。任意に変更することも、
go-web:v1 のようにバージョン番号を追加することもできます。
。
上記の出力が表示されたら、コンパイルが成功し、ローカルに
docker イメージを使用して次のクエリを実行できます。
6. docker-compose.yml
## を作成します。 # to これは最後のステップです。go プログラムを実行するためにコンパイルしたばかりの go-web
を使用する場合:
version: '2'networks: basic:services: world: container_name: world image: go-web ports: - "8099:80" volumes: - ./app/go/world:/go/src/app:rw networks: - basic
この時点で、オーケストレーション ファイルが作成されました。必要なだけ オーケストレーション ファイルを開始するには docker-compose
を使用する必要があります。起動コマンドは次のとおりです:
docker-compose -f docker-compose.yml up -d world
以下のプロンプトが出力されれば、起動は成功です。 <pre class='brush:php;toolbar:false;'>Creating world ... done</pre>
起動が成功したら、
docker ps
を使用して起動が成功したかどうかを確認できます。
次に、
http://127.0.0.1:8099にアクセスして、Go プログラムにアクセスします。
推奨される学習: 「docker ビデオ チュートリアル
」
以上がDocker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

実際のプロジェクトのDockerのアプリケーションシナリオには、展開の簡素化、マルチコンテナーアプリケーションの管理、パフォーマンスの最適化が含まれます。 1.Dockerは、dockerfileを使用してnode.jsアプリケーションを展開するなど、アプリケーションの展開を簡素化します。 2。DockerComposeは、マイクロサービスアーキテクチャのWebやデータベースサービスなどのマルチコンテナーアプリケーションを管理しています。 3.パフォーマンス最適化は、マルチステージ構造を使用して画像サイズを縮小し、健康チェックを通じてコンテナのステータスを監視します。

小さなプロジェクトまたは開発環境でDockerを選択し、大規模なプロジェクトまたは生産環境でKubernetesを選択します。 1.ドッカーは、迅速な反復とテストに適しています。2。Kubernetesは、大規模なアプリケーションの管理と拡張に適した強力なコンテナオーケストレーション機能を提供します。

Linuxは、豊富なツールとコミュニティサポートを提供するネイティブプラットフォームであるため、LinuxでDockerが重要です。 1. docker:sudoapt-getupdateとsudoapt-getinstalldocker-cedocker-ce-clicotainerd.ioを使用します。 2。コンテナの作成と管理:Dockerrun-D-Namemynginx-P80:80NginxなどのDockerrunコマンドを使用します。 3。DockerFileを書き込み:画像サイズを最適化し、マルチステージ構造を使用します。 4。最適化とデバッグ:DockerLogsとDockerexを使用します

Dockerはコンテナ化ツールであり、Kubernetesはコンテナオーケストレーションツールです。 1. Dockerパッケージアプリケーションとその依存関係は、Docker対応環境で実行できるコンテナに依存します。 2。Kubernetesはこれらのコンテナを管理し、自動展開、スケーリング、管理を実装し、アプリケーションを効率的に実行します。

Dockerの目的は、アプリケーションの展開を簡素化し、コンテナ化技術を通じてさまざまな環境でアプリケーションが一貫して実行されるようにすることです。 1)Dockerは、アプリケーションと依存関係をコンテナにパッケージ化することにより、環境の違いの問題を解決します。 2)DockerFileを使用して画像を作成して、アプリケーションがどこでも一貫して実行されることを確認します。 3)Dockerの作業原則は画像とコンテナに基づいており、Linuxカーネルの名前空間とコントロールグループを使用して、分離とリソース管理を実現します。 4)基本的な使用法には、DockerHubからの画像の引き込みと実行が含まれます。高度な使用法には、DockerComposeを使用したマルチコンテナーアプリケーションの管理が含まれます。 5)画像構築の故障やコンテナの障害などの一般的なエラーは、ログやネットワーク構成を介してデバッグできます。 6)パフォーマンス最適化構造

Ubuntu、Centos、およびDebianにDockerをインストールして使用する方法は異なります。 1)ubuntu:aptパッケージマネージャーを使用します。コマンドはsudoapt-getupdate && sudoapt-getinstalldocker.ioです。 2)Centos:Yum Package Managerを使用すると、Dockerリポジトリを追加する必要があります。コマンドは、sudoyumininstall-yyum-utils && sudoyum-config-manager - add-repohttps://download.docker.com/linです

LinuxでDockerを使用すると、開発効率が向上し、アプリケーションの展開を簡素化できます。 1)Ubuntu画像を引く:dockerpullubuntu。 2)ubuntuコンテナを実行:Dockerrun-itubuntu/bin/bash。 3)nginxを含むDockerFileを作成します:fromubuntu; runapt-getupdate && apt-getinstall-ynginx; expose80。 4)画像の作成:dockerbuild-tmy-nginx。 5)コンテナの実行:Dockerrun-D-P8080:80

Dockerは、Linuxのアプリケーションの展開と管理を簡素化します。 1)Dockerは、アプリケーションとその依存関係を軽量でポータブルコンテナにパッケージ化するコンテナ化されたプラットフォームです。 2)Linuxでは、DockerはCgroupと名前空間を使用して、コンテナの分離とリソース管理を実装します。 3)基本的な使用には、画像の引き込みと実行容器が含まれます。 DockerComposeなどの高度な使用は、マルチコンテナーアプリケーションを定義できます。 4)一般的に使用されるDockerLogsとDockerexecコマンドをデバッグします。 5)パフォーマンスの最適化は、マルチステージの構造により画像サイズを縮小することができ、DockerFileをシンプルに保つことがベストプラクティスです。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境
