golang docker web デプロイメント

WBOY
リリース: 2023-05-15 09:57:37
オリジナル
502 人が閲覧しました

インターネットの急速な発展に伴い、エンタープライズ アプリケーションの展開と管理はますます複雑になってきています。 Docker コンテナ技術の登場により、開発者はアプリケーションの展開プロセスと環境構築作業を大幅に簡素化できます。この記事では、Go 言語と Docker コンテナー テクノロジーを使用して Web アプリケーションをデプロイおよび管理する方法を紹介します。

1. 準備

1. Go 言語開発環境をインストールします。
Go 言語開発環境と関連ツールをインストールする必要があります。ダウンロード アドレスは https://golang.org/dl/ です。

2. Docker コンテナテクノロジーをインストールします。
Docker CE の最新バージョンをインストールする必要があります。ダウンロード アドレスは https://www.docker.com/community-edition です。

3. コードエディタをインストールします。
この記事では、コード エディターとして Visual Studio Code を使用します。ダウンロード アドレスは、https://code.visualstudio.com/download です。

4. Go Web プロジェクトを作成します。
コマンド ラインで作業ディレクトリを入力し、次のコマンドを使用して「goweb」という名前の Go Web プロジェクトを作成します。

$ go mod init goweb

5. 必要な Go 依存関係パッケージをダウンロードします。
次のコマンドを使用して、必要な Go 依存関係パッケージをダウンロードします。

$ go get -u github.com/gin-gonic/gin

2. Web アプリケーションの作成

前のステップで、Gin フレームワークは次のようにインストールされました。 Web アプリケーション プログラムの基本的なサポート。簡単な Web アプリケーションを作成してみましょう。

1. プロジェクト内にフォルダーを作成し、フロントエンド リソースと静的ファイルを保存するディレクトリとして「static」という名前を付けます。

2. プロジェクト内に「templates」という名前のフォルダーを作成し、HTML テンプレート ファイルを保存します。

3. 次の内容を含む「main.go」という名前の Go ファイルを作成します:

package main

import "github.com/gin-gonic/gin"

func main() {
    router := gin.Default()
    router.LoadHTMLGlob("templates/*")
    router.Static("/static", "./static")
    router.GET("/", func(c *gin.Context) {
        c.HTML(200, "index.tmpl", gin.H{
            "title": "Golang Docker Web Deployment",
        })
    })
    router.Run(":8080")
}
ログイン後にコピー

上記のコードは、Gin フレームワークを使用してテンプレートと静的ファイルをロードする、単純な Web サイトを作成します。この Web サイトは、http://localhost:8080/ にアクセスして表示できます。

3. Docker イメージの構築

次に、Docker を使用して Docker イメージを構築しましょう。

1. プロジェクトのルート ディレクトリに "Dockerfile" という名前のファイルを作成します。ファイルの内容は次のとおりです:

FROM golang:1.16 AS build

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .

FROM alpine:latest

RUN apk --no-cache add ca-certificates

WORKDIR /root/

COPY --from=build /app/app .

EXPOSE 8080

CMD ["./app"]
ログイン後にコピー

上記のコードは Dockerfile を作成します。最初の段階では、 golang を使用します。 1.16 をベース イメージとして使用し、必要な Go 依存関係パッケージをインストールし、ローカル コードをイメージにコピーしてアプリケーションをビルドします。第 2 フェーズでは、最新バージョンのアルパイン イメージがベース イメージとして使用され、アプリケーション ファイルがコンテナーにコピーされて実行されます。

2. コマンド ラインを開き、プロジェクトのルート ディレクトリを入力し、次のコマンドを実行して Docker イメージをビルドします。

$ docker build -t golang-web .

上記のコマンドは、Dockerfile ファイルの内容を読み取り、「golang-web」という名前のイメージをビルドします。

3. Docker コンテナの実行
次のコマンドを実行してコンテナを起動します。

$ docker run -p 8080:8080 golang-web

上記のコマンドは、「golang-web」という名前のコンテナーを起動し、コンテナーの 8080 ポートをホストの 8080 ポートにマップします。

4. Docker Compose による複数のコンテナの管理

複数のコンテナを同時に管理する必要がある場合は、Docker Compose を使用して複数のコンテナを作成および管理できます。

1. docker-compose.yml ファイルを作成します
プロジェクトのルート ディレクトリに、次の内容を含む「docker-compose.yml」という名前のファイルを作成します:

version: '3'

services:
  backend:
    build: .
    ports:
      - "8080:8080"
    command: ["./app"]
  frontend:
    image: nginx:alpine
    volumes:
      - ./frontend:/usr/share/nginx/html
    ports:
      - "80:80"
ログイン後にコピー

上記の構成では 2 つのサービスが作成されます: 1 つは Go Web アプリケーションを実行する「backend」という名前で、もう 1 つはフロントエンド プロキシとして NGINX Web サーバーを実行する「frontend」という名前です。

2. フロントエンド ディレクトリの作成
プロジェクトのルート ディレクトリに、「frontend」という名前のディレクトリを作成し、次の内容を含む「index.html」という名前の HTML ファイルを作成します。

<!DOCTYPE html>
<html>
<head>
    <title>Go Docker Web Deployment</title>
</head>
<body>
    <h1>Hello World!</h1>
</body>
</html>
ログイン後にコピー

上記のコードは単純な HTML ページです。

3. Docker Compose の起動
コマンド ラインにプロジェクトのルート ディレクトリを入力し、次のコマンドを実行して Docker Compose を起動します:

$ docker-compose up -d

上記のコマンド 2 つのサービスが開始されます。「-d」オプションを使用すると、Docker Compose がバックグラウンドで実行できることに注意してください。

4. 概要

この記事の導入部を通じて、Go 言語と Docker コンテナー テクノロジを使用して単純な Web アプリケーションを迅速に構築し、Docker Compose を使用して複数のコンテナーを管理できるようになります。この方法により、導入プロセスと環境セットアップ作業が大幅に簡素化され、エンタープライズ アプリケーションの迅速な導入と管理が容易になります。

以上がgolang docker web デプロイメントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!