この記事では、GoLang Web プログラムの作成や Linux でのパッケージのコンパイルに関する問題など、Docker イメージに基づいた Go プロジェクトのデプロイに関する関連知識を提供します。
#依存関係の知識Mac環境で開発・テストを行ったので、Windowsの場合は多少の違いはあるかもしれませんが、大きな問題はないと思います。
1. 依存環境 次の内容を含む新しい
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 つ作成されます。当面はそのままにしておきます。
を使用して Go プログラムのイメージをカスタマイズします
Dockerfile ファイルを作成します。次に、その中に ##app
、script
という 2 つのファイルを新規作成します。前の手順の main
プログラムを app
フォルダーに置き、script
に新しい build.sh
スクリプト ファイルを作成します。ファイルの内容については、後で説明しますので、今は気にしないでください。 具体的なファイル構造は以下の通りです。
. ├── Dockerfile ├── app │ └── main └── script └── build.sh
ファイルの内容です。最初に内容をコード化します: <pre class="brush:sql;toolbar:false;">FROM golang
MAINTAINER 青羽
WORKDIR /go/src/COPY . .EXPOSE 80CMD ["/bin/bash", "/go/src/script/build.sh"]</pre>
ここに説明があります:
golang
のようなイメージを公式に提供しています。
script/build.sh
を実行するためのもので、このスクリプトには go プログラムを開始するコマンドが含まれています。 ここにコンテンツを貼り付けます:
#!/usr/bin/env bash cd /go/src/app/ && ./main
5. 独自のイメージをコンパイルする
の知識に属するため、コマンドを貼り付けます。 <pre class="brush:sql;toolbar:false;">docker build -t go-web .</pre>
go-web:v1 のようにバージョン番号を追加することもできます。
。
上記の出力が表示されたら、コンパイルが成功し、ローカルに
go-web## という名前のファイルがあることを意味します。画像 #ミラー。docker イメージを使用して次のクエリを実行できます。
6. docker-compose.yml
ファイル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:sql;toolbar:false;">Creating world ... done</pre>
起動が成功したら、
docker ps
を使用して起動が成功したかどうかを確認できます。
次に、
http://127.0.0.1:8099にアクセスして、Go プログラムにアクセスします。
推奨される学習: 「docker ビデオ チュートリアル
」
以上がDocker イメージに基づいて Go プロジェクトをデプロイする (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。