工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 産業技術

マルチステージコンテナビルドでデプロイを効率化

アプリケーションをビルド環境ごと丸ごと配布すると、システムはすぐに巨大になります。これにはビルド環境やテスト環境も含まれます。配布に必要なファイルの抽出自体は問題ではありませんが、時間がかかります。

コンテナを使用すれば、このプロセスを自動化できます。

1つのファイル内で複数のコンテナを定義することが可能です。Node.jsでビルドされたJavaScriptベースのWebサイトが好例です。

例:

全体を1つのコンテナにすると600 MB以上になりますが、実際に本番で必要なのはnginxとWebサイトの約22 MBのみです。また、本番運用に不要なソフトウェアが含まれるため、セキュリティリスクも生じます。この解決策がマルチステージビルドです。

マルチステージビルドでは、1つのDockerfile内で複数のコンテナ(ステージ)を定義し、あるステージから次のステージへ必要な成果物だけをコピーします。

マルチステージDockerfileの例

Node.jsの例を続けます。最初のステージではNode.jsをビルドシステムとして使用し、Webサイトを構築します。2番目のステージではWebサーバー(nginx)を含め、ビルド後に最初のステージから必要なファイルのみをコピーします。

## ベースシステム ステージ1
## コミュニティ版Node.jsコンテナを使用
FROM node:8.11.3 as buildsystem

## Gitプロジェクトからソースを追加
COPY ./source /root/frontend

## Node.jsでフロントエンドをビルド
WORKDIR /root/frontend/
RUN npm install \
&& npm run build

#####################################################################
#####################################################################

## ベースシステム ステージ2
## コミュニティ版nginxコンテナを使用(Alpine Linuxベース)
FROM nginx:alpine

## ステージ1からビルド成果物をコピー
RUN mkdir -p /var/www/html/<MyApp>
COPY --from=buildsystem /root/frontend/dist/ /var/www/html/<MyApp>/

## nginx用デフォルト設定を追加
ADD default.conf /etc/nginx/conf.d/

## ポート公開
EXPOSE 80

## nginx起動
CMD ["nginx", "-g", "daemon off;"]

結果として、最小限のコンポーネントのみを含む小さなコンテナが得られます。nginxには非常に軽量なLinuxディストリビューションであるAlpineを使用しています。

もう1つの利点は、メンテナンス済みのコミュニティコンテナを2つ利用できるため、それらを自前で作成・維持する手間が不要なことです。システム更新時には、コミュニティコンテナを定期的に差し替えるだけで済みます。この一連の流れは、GitLabなどのパイプラインで完全に自動化できます。

産業技術

  1. Raspberry Pi、DHT11、ThingSpeakで作る初めてのIoTプロジェクト
  2. 科学的記数法での乗算と除算:マスターする
  3. インダストリー4.0の洞察:Bosch.IOのベレナ・マユントケ氏へのQ&A - IoT、自動化、未来の工場
  4. マイクロソフトが170億パラメータ言語モデル「Turing-NLG」発表、過去最大規模
  5. AI駆動ロードマップ:サプライチェーン企業のための戦略的ガイド
  6. スマートな調達:AIと人間の洞察(HI)を融合させる
  7. x86システム上での効率的なARMコンテナビルド
  8. マルチステージコンテナビルドでデプロイを効率化
  9. Docker上のNode-REDをマスター:エキスパートのヒントとベストプラクティス
  10. 効率的なコンテナクレーン:港湾とレールヤードでの精密な積み下ろし
  11. ビジネスリーダーとの信頼構築:適切なクラウドサービスの選択