目次
- モジュールとGOバージョンを定義します。
ホームページ バックエンド開発 Golang 最小限のDocker画像を構築します

最小限のDocker画像を構築します

Jan 29, 2025 pm 02:07 PM

Building Minimal Docker Images

合理化されたDockerミラー:ワークフローを改善する革新的な利点

Dockerについて話しましょう。はい、この魔法のツールはすべての開発者から賞賛されているようです。それは私たちの生活を楽にすることを約束し、展開はよりスムーズです。しかし、問題は、Dockerミラーが肥大化している可能性があることです。彼らはあなたが週末に詰める大きなスーツケースのようなもので、不必要なものでいっぱいです、あなたはあなたが必要とするものさえ見つけることができません!これは、手がかりの代わりにバックパックを使用するようなものです。それでは、をDocker Mirror

に紹介しましょう。これは、コンテナの究極の減量計画です。 ?

これは、ミラーを減らす数人のメガーではなく、これらのコンテナがより簡単に保護、展開、拡張できるようにします。シートベルトを締めてください!合理化されたDockerミラーの世界を探索し、実際の例と実際の手順を使用してそれを豊かにします。

合理化されたDockerミラーの重要性は何ですか? ?

Docker Mirrorは食事と見なされています。不要なライブラリ、ツール、構成を埋めるよりも、必要なアイテムのみを含めることをお勧めします。これは、さまざまな材料でいっぱいの「豪華な」ピザの代わりに、シンプルなマーガレットピザを注文するようなものです。味はより良く、効果はより良いです。


以下は高速の比較です:

----

なぜ合理化されたDockerミラーを気にする必要があるのですか? ?

「なぜそれほど支払うのか、私のアプリケーションがうまくいくのか」と考えているなら、合理化されたミラーは

ゲームのルールを変更する理由です 1。セキュリティ:より合理化されています

Dockerミラー内の追加の依存関係、ツール、またはライブラリはすべて、潜在的な抜け穴です。合理化されたミラーは、攻撃面を減らします。パーツが少ないほど、ハッカーがスニークすることが少なくなります。それはあなたのすべてのドアをロックするようなものです - ここには招待されていないゲストはありません!

2。コストを節約しますか? 特にクラウドでは、ストレージと帯域幅は無料ではありません。 AWS、Azure、またはGCPに展開されているかどうかにかかわらず、マージドバイトごとに蓄積します。簡素化されたミラーは、ストレージコストを節約し、データ送信コストを削減できます。このお金を使ってピザを買うことができます。 ? 3。簡単な拡張?

クラスターに複数のコンテナを展開すると、毎秒が重要です。ミラーのスタートアップ速度が小さいため、拡張機能が速くなります。

ステップバイステップ:合理化されたDockerミラーを作成しますか? 本当の例を豊かにしましょう!簡単なGOアプリケーションを構築し、そのためのスーパーライトウェイトDockerミラーを作成します。

プロジェクト構造?

プロジェクトフォルダーを以下に示す必要があります

go application main.go

- 単純な「こんにちは、世界!」なぜ人生を複雑にするのですか?


go.mod

- モジュールとGOバージョンを定義します。

秘密:dockerfileを合理化しますか?

以下は、複数の段階で構築された合理化された鏡の魔法の秘密のレシピです。

その作業原則:

<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>
ログイン後にコピー
ログイン後にコピー

construct

:最初の段階がアプリケーションをコンパイルします。第2段階には、コンパイルされたバイナリファイルのみが含まれます。 スクラッチベーシックミラー

:最も軽い要素画像(0バイト)。これは、ホワイトペーパーから始めるようなものです。
<code>package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, World!")
    })
    http.ListenAndServe(":8080", nil)
}</code>
ログイン後にコピー

追加コンテンツなし:不要なライブラリ、ツール、ファイル - アプリケーションのみ。

<code>module github.com/krishnaaher/golang-server
go 1.23.3</code>
ログイン後にコピー

合理化されたミラーを構築して実行しますか?

以下は、いくつかの簡単な手順でゼロからヒーローへの方法です。

1。

プロジェクトディレクトリで次のコマンドを実行してください:
<code># 阶段1:构建Go应用程序
FROM golang:1.23.3-alpine AS builder

WORKDIR /app

COPY go.mod .
COPY main.go .

RUN go build -o /app/main

# 阶段2:创建一个精简的运行时环境
FROM scratch

COPY --from=builder /app/main /app/main

# 运行应用程序的命令
CMD ["/app/main"]</code>
ログイン後にコピー

2。サイズを確認してください

    ミラーが必要に応じて合理化されているかどうかを確認してください:
  • 出力を期待する:
  • 3。コンテナを実行します
  • 鏡像を実行して、ポート8080にマッピングしてください:
  • 4。
ブラウザを開くか、テストにCurlを使用してください:

出力:
<code>/dockerized-golang-server
  |-- Dockerfile
  |-- go.mod
  |-- main.go</code>
ログイン後にコピー
ログイン後にコピー

成功の重要な要素?

    construct
  • :ある段階でコンパイルし、別の段階で実行します。それは清潔で効率的で、ミラーリングを小さく保ちます。 正しい基本的な鏡像を選択します
  • :ゼロから始めて、最小の画像を取得します。いくつかの基本的なOS機能が必要な場合、Alpineは良い選択です。
  • 不要な依存関係を削除:Go Mod Tidyまたは同様のツールを使用して、言語をクリーンアップします。
  • ローカルテスト:重要なコンテンツが失われないように、合理化されたミラーを常にテストしてください。
  • さあ、Dockerを開始してください!あなたの軽量の容器があなたを待っています。 ?

以上が最小限のDocker画像を構築しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Debian OpenSSLの脆弱性は何ですか Debian OpenSSLの脆弱性は何ですか Apr 02, 2025 am 07:30 AM

OpenSSLは、安全な通信で広く使用されているオープンソースライブラリとして、暗号化アルゴリズム、キー、証明書管理機能を提供します。ただし、その歴史的バージョンにはいくつかの既知のセキュリティの脆弱性があり、その一部は非常に有害です。この記事では、Debian SystemsのOpenSSLの共通の脆弱性と対応測定に焦点を当てます。 Debianopensslの既知の脆弱性:OpenSSLは、次のようないくつかの深刻な脆弱性を経験しています。攻撃者は、この脆弱性を、暗号化キーなどを含む、サーバー上の不正な読み取りの敏感な情報に使用できます。

PPROFツールを使用してGOパフォーマンスを分析しますか? PPROFツールを使用してGOパフォーマンスを分析しますか? Mar 21, 2025 pm 06:37 PM

この記事では、プロファイリングの有効化、データの収集、CPUやメモリの問題などの一般的なボトルネックの識別など、GOパフォーマンスを分析するためにPPROFツールを使用する方法について説明します。

Goでユニットテストをどのように書きますか? Goでユニットテストをどのように書きますか? Mar 21, 2025 pm 06:34 PM

この記事では、GOでユニットテストを書くことで、ベストプラクティス、モッキングテクニック、効率的なテスト管理のためのツールについて説明します。

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

go.modファイルで依存関係をどのように指定しますか? go.modファイルで依存関係をどのように指定しますか? Mar 27, 2025 pm 07:14 PM

この記事では、go.modを介してGOモジュールの依存関係の管理、仕様、更新、競合解決をカバーすることについて説明します。セマンティックバージョンや定期的な更新などのベストプラクティスを強調しています。

フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? フロントエンドからバックエンドの開発に変身すると、JavaやGolangを学ぶことはより有望ですか? Apr 02, 2025 am 09:12 AM

バックエンド学習パス:フロントエンドからバックエンドへの探査の旅は、フロントエンド開発から変わるバックエンド初心者として、すでにNodeJSの基盤を持っています...

GOでテーブル駆動型テストをどのように使用しますか? GOでテーブル駆動型テストをどのように使用しますか? Mar 21, 2025 pm 06:35 PM

この記事では、GOでテーブル駆動型のテストを使用して説明します。これは、テストのテーブルを使用して複数の入力と結果を持つ関数をテストする方法です。読みやすさの向上、重複の減少、スケーラビリティ、一貫性、および

See all articles