このケースはCentOS 7システムに基づいています
1. Docker部分 1.1 Dockerの紹介 Docker はオープンソースのアプリケーション コンテナ エンジンであり、開発者がアプリケーションと依存関係をポータブル コンテナにパッケージ化して、一般的な Linux マシンに公開し、仮想化を実現することもできます。コンテナは完全にサンドボックス化されており、コンテナ間にインターフェースはありません。 1.2、Dockerアーキテクチャ 簡単に言えば、Docker は軽量の Linux システムです。 Docker コンテナは Docker イメージから作成されます。コンテナとイメージの関係は、オブジェクト指向プログラミングにおけるオブジェクトとクラスの関係に似ています。 Docker アーキテクチャを図に示します。 1.3. Docker仮想マシン管理コマンド 1.4. Dockerをインストールする ソフトウェアライブラリを更新する yum アップデート -y Dockerをインストールする yum で docker をインストール -y 1.5. Dockerサービスを開始する Dockerサービスを開始する サービスdocker開始 その他の関連コマンド service docker restart // docker サービスを再起動します service docker stop // docker サービスを停止します 2. ノード部分 Koa フレームワークを使用して hello-world プロジェクトを作成し、プロジェクトのルート ディレクトリに新しい Dockerfile ファイルを作成できます。 Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の内容はレイヤーの構築方法を記述します。 自作のDockerfileの設定情報は以下の通りです。Dockerに慣れている人であれば自分で設定することも可能です。 # Dockerファイル # ノードをミラーとして使用 FROM ノード # コンテナ内にディレクトリを作成する RUN mkdir -p /home/project # コンテナの作業ディレクトリをこのディレクトリに設定します WORKDIR /home/project # ポート3000を外部に公開する EXPOSE 3000 # コンテナ作成後に実行されるコマンド CMD npm install --registry=https://registry.npm.taobao.org && node ./start.js 後続のJenkinsデプロイメントに備えてプロジェクトをGitHubに公開する 3. ジェンキンスの部分 Jenkinsイメージをクエリする docker 検索 ジェンキンス 最新のJenkinsイメージを取得する docker pull jenkins:最新 Jenkinsを起動する sudo docker run -d -u 0 --privileged --name jenkins_node1 -p 49003:8080 -v /root/jenkins_node1:/var/jenkins_home jenkins:latest コマンド分析:
コンテナ内の組み込みアカウントを上書きするためにルートアカウントIDを渡すことを意味します
dockerコンテナ内のディレクトリ/var/jenkins_homeをホストマシンの/root/jenkins_node1ディレクトリにマッピングすることを指します。
コンテナにjenkins_node1という名前を付けます
ポートマッピング、コンテナのポート 8080 をホストのポート 49003 にマッピングする
最高権限を与える コマンド全体の意味 イメージ jenkins:latest を含む jenkins_node1 という名前のコンテナを実行し、root アカウントを使用してコンテナ内のアカウントを上書きし、最高権限を付与し、コンテナの /var/jenkins_home をホストの /root/jenkins_node1 ディレクトリにマップし、コンテナ内のポート 8080 をホストのポート 49003 にマップします。 Jenkinsを見る 実行が完了したら、Jenkins コンテナが初期化を開始するまで数十秒待ちます。 host/root/jenkins_node1の下にさらに多くのファイルがあるかどうかを確認できます。 ブラウザにlocalhost:49003と入力して、Jenkinsが正常に起動しているかどうかを確認します。 次のインターフェイスは起動が成功したことを示します。 パスワードを取得 cat /root/jenkins_node1/secrets/初期管理者パスワード 出力されたパスワードをコピーしてページに貼り付け、[続行] をクリックして次のページに進みます。 インストールをクリック インストールが完了するまで待ってから、管理者アカウント作成インターフェースに入ります。 アカウントとパスワード情報を入力し、「保存」(情報を完了)をクリックしてホームページに進みます。 Jenkinsを設定し、システム管理ページに入り、プラグインを管理する SSHプラグインを選択し、 直接インストールし、インストールが完了するまで待ってからホームページに戻ります。 システム管理 -> システム構成に移動します 一番下までドラッグし、「SSH 経由で公開」をクリックします。 詳細を選択し、サーバーのIP、ユーザー名、パスワードを入力して、構成のテストをクリックします。 「成功」と表示された場合は、設定が正しいことを意味します。保存してホームページに戻ります 新しいプロジェクトを作成する プロジェクト名を入力してください ソースコード管理を選択し、git管理を使用し、githubリポジトリのアドレスを入力して、githubユーザーを追加します。 完了してビルド環境を選択します。 実行されたコマンド sudo docker stop nodeapp || true \ && sudo docker rm nodeapp || true \ && cd /root/jenkins_node1/workspace/node \ && sudo docker build --rm --no-cache=true -t node - < Dockerfile \ && sudo docker run -d --privileged=true --name nodeapp -p 3000:3000 -v /root/jenkins_node1/workspace/node:/home/project ノード 保存したら、「今すぐビルド」をクリックします。 ビルドが成功すると、ホストディレクトリ /root/jenkins_node1/workspace/node にプロジェクトファイルが表示されます。 ページ情報にアクセスするには、ブラウザにdockerサーバーのアドレスlocalhost:3000を入力します。 起動に失敗した場合は、ログを確認して失敗の原因を特定できます。 docker ログ nodeapp 4. Jenkins + GitHub 自動デプロイ ローカルコードをGitHubに送信してプッシュした後、Jenkinsが自動的に最新のコードをプルして再デプロイするようにしたい場合は、読み続けてください。 サーバーはインターネットからアクセス可能である必要があります。ローカルでテストしたい場合は、natappまたはngrokを使用してイントラネットに侵入してみてください。 ホームページのユーザーをクリック ホーム -> ユーザー -> root 設定 -> APIトークンを表示をクリックします APIトークンの値をコピーします ホーム -> ノード -> 構成 -> ビルドトリガーに戻り、認証トークンを貼り付けます。 githubプロジェクトページにログインし、「設定」->「Webhook」->「Webhookの追加」を開きます。 Webhookの追加 Jenkinsのセキュリティポリシーを変更する Jenkinsホームページで、システム管理 -> グローバルセキュリティの設定(システム設定の下にある)を選択し、次の設定を行います。 この時点で、git push が完了すると、Jenkins は自動的にビルドとデプロイを実行します。 5. dockerの一般的なコマンド Dockerに興味がある人は、さらに学び続けることができます ミラー関連 クエリ画像 docker 検索 [名前] 画像をプルする docker pull [名前] 画像のインポート docker ロード < /home/node.tar.gz 画像のエクスポート docker 保存 > /home/node.tar.gz すべての画像を照会 Docker イメージ 画像の削除 docker rmi [名前] 画像名を変更する docker タグ docker.io/node ノード コンテナ関連 起動する # 実行して対話モードに入る docker run -it --name myjava java bash # バックグラウンドで実行 docker run -d --name myjava java ポートマッピング docker run -it --name myjava -p 9000:8085 -p 9000:8086 java bash ディレクトリマッピング docker run -it --name myjava -v /home/project:/soft --privileged docker.io/node bash バックグラウンドで実行されているコンテナに入る docker exec -it 名前 bash 自動再起動 docker run --restart=always -it --name myjava -p 9000:8085 -p 9000:8086 java bash コンテナを一時停止する docker 一時停止ノード コンテナを停止して一時停止する docker ノードの一時停止を解除 コンテナを停止する docker ノードを停止する コンテナを起動する docker start -i ノード コンテナを表示 ドッカーps -a Dockerネットワークセグメント関連 ネットワークセグメントの作成 docker ネットワーク作成 net1 ネットワークセグメント情報を表示する docker ネットワーク検査 net1 ネットワークセグメント情報を削除する docker ネットワーク rm net1 6. まとめ 最近Node.jsを勉強しているので、Docker+jenkinsを使ってこの自動デプロイメントプロセスを実装したいと考えていました。1日懸命に作業した後、ようやく構成に成功しました。以前は、pm2 はノード プロジェクトの管理に使用され、pm2 はノード プロジェクトを自動的にデプロイするために使用されていました。ご興味があれば、ぜひご覧ください。 pm2 を使用してノード プロジェクトを自動的にデプロイします。これは自分用の要約メモです。書き方が下手な部分があれば指摘してください。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)
>>: MySQL 5.7.19 Winx64 ZIP アーカイブのインストールと使用に関する問題の概要
目次1. はじめに2. MySQLルーターを構成する2.1 MySQLルーターのインストール2.2 ...
最初のステップ組み込みのパッケージ管理機能で一度削除する yum 削除 nodejs npm -y ...
Zabbix 管理者ログイン パスワードのリセットに関する問題は次のとおりです。 1. 問題の説明:...
HTML で境界線を設定する 3 つの方法 境界線の幅: 1px 2px 2px; 境界線のスタイル...
複雑なコンポーネント (クラス コンポーネント) と単純なコンポーネント (関数コンポーネント) を...
目次React Hooks に基づく状態共有の実装ユーザーエクスペリエンスこの記事では、主に Rea...
過去に別れを告げるvscode にリモート SSH が導入される前は、Linux サーバー開発者の多...
CentOS システムで MySQL データベース ディレクトリの場所を変更する方法1. まず、My...
<TD> タグの属性は、テーブル内のセルのプロパティを設定するために使用されます。表 &...
序文Dockerを使ってHadoopクラスタを起動するたびに、ネットワークカードの再バインド、IPの...
目次1. プロセス2. コアアーキテクチャ2.1 サーバー層の基本コンポーネントの紹介3. ステート...
目次シナリオコードの実装要約:シナリオ最近、ElementUI をベースにしたバックグラウンド管理シ...
重要なイベントまであと何日あるか知りたいですか? Linux bash と date コマンドが役に...
<input> タグ<input> タグはユーザー情報を収集するために使用さ...
この記事では、Centos7.3でのmysql5.7.18のインストールと初期パスワードの変更につい...