アプリケーションの展開が単純なアプリケーションである、ノード管理Webアプリケーションを使用して、私は非常に具体的な意志はないです、もちろん、あなたはまた、Tomcatサーバー構成することができます。これは主にドッキングウィンドウを学んでいます。クライアントとサーバーを必要とし、マシンは、Linuxオペレーティングシステム用でなければならない働きをします。おおよそ次のロジックに分かれて:
- 開発者のPCでのプログラミング
- Gitのプッシュは、サーバーのソースコードにアップロードされます使用します
- サーバがクライアントのgit pushコマンドを受信すると、Gitのフックを実行します
- ドッキングウィンドウミラーgitのフックを作成し、コンテナで実行
1. gitのクライアントでプロジェクトを作成します。
Gitの初期化simpleapp位gitリポジトリの初期化 リポジトリのディレクトリに切り替えるには、CDのsimpleapp /#を
Node.jsのを書くために必要なクライアントファイル2.とのgitに提出
- app.jsファイル
VaRのExpressは=( '発現')を必要とします。 VARアプリ=エクスプレス()。 app.get([ '/'、 '/ index.htmlを']、関数(リクエスト、レスポンス){ response.send( 'ハローワールド。'); } ); app.listen(80)。
- package.jsonファイル
{ "名前": "simpleapp"、 "説明": "こんにちはドッカー"、 "バージョン": "0.0.1"、 "依存性":{ "発現": "4.4.xから" } }
- gitのために用意した文書を提出
Gitはapp.js package.json#はgitのに追加追加し 、「ソースの追加」コミット-mをgitの#gitのに提出
注意: gitの設定--global user.name <名前>、gitの設定--global user.email <メールボックス>:これはあなたの名前とメールアドレス、特定のコマンドを設定する必要があり、新規インストールであるgitの場合。
3.書き込みとDockerfileをgitのために提出
- ファイルDockerfile
UbuntuのFROM:最新 RUN MVの/etc/apt/sources.list /etc/apt/sources.list_bak //ミラー:RUNエコー「debファイルは、バイオニックメインマルチバース制限宇宙\ ndeb http://mirrors.aliyun.com/ubuntu/バイオニック-backportsのメインマルチバース制限された宇宙を\ ndeb HTTP http://mirrors.aliyun.com/ubuntu/。バイオニック・提案メインマルチバース制限宇宙aliyun.com/ubuntu/ \ ndeb http://mirrors.aliyun.com/ubuntu/バイオニック・セキュリティのメインマルチバース制限宇宙\ ndeb http://mirrors.aliyun.com/ubuntu/ bionic-アップデートのメインマルチバース制限宇宙の\ ndeb-SRC http://mirrors.aliyun.com/ubuntu/バイオニックメインマルチバース制限宇宙の\ ndeb-SRC http://mirrors.aliyun.com/ubuntu/バイオニック-backportsのメインマルチバース制限宇宙\ ndeb-SRC http://mirrors.aliyun.com/ubuntu/バイオニック・提案メインマルチバース制限宇宙\ ndeb-SRC http://mirrors.aliyun.com/ubuntu/バイオニック・セキュリティのメインmultiverseを制限された宇宙\ ndeb-SRCのhttp ://ミラー。aliyun.com/ubuntu/バイオニック・アップデートのメインマルチバース制限宇宙」>の/etc/apt/sources.list RUN aptの更新 RUNがちインストール-y nodejs NPM app.jsの/var/www/app.jsはADD /var/www/package.json package.jsonを追加 WORKDIRは/ var / WWWの インストールRUNのNPM CMDはapp.jsをnodejs
ファイルの説明:
:FROM表現はUbuntuのである:最新の画像の作成
:RUNソフトウェアnodejsをインストールした後、アリ・ソースの交換作業をしてNPM
:ADDコンテナの/ var / wwwディレクトリに追加app.jsと、先ほど作成したpackage.jsonファイルの下で
WORKDIR: RUN、実行ディレクトリのCMDをスイッチバック
RUN: NPMは、インストールの実行には、Node.jsのモジュールpackage.jsonにファイルをインストールします
CMD:コンテナnodejsはapp.jsの実行を開始するとき使用するために提供
- gitのに提出
gitの追加Dockerfile#はgitのに追加 「Dockerfileを追加」-mコミットgitの#gitを提出
4.クライアントのSSHキーを作成します。
SSH-keygenのは、RSA非対称鍵暗号化アルゴリズム、デフォルトのパスによって生成される実行し、パスワードが空です。
SSH-keygenの#は、非対称鍵のデフォルトの選択を生成します
id_rsaとは、生成した秘密鍵と公開鍵id_rsa.pubファイルを見ることができます。
5.サービスのマシン上のgitとディッカーをインストールし、gitのプロジェクトを作成します
私はマシンは、仮想マシンが、Ubuntuシステムでサービスを提供するためにここにいます。コマンドを実行します。
サービスマシンにインストール須藤はaptインストールのgit#gitの キオスクにインストールdocker.io#ドッキングウィンドウインストールのapt sudoの
初期化〜/書類/ simpleapp#はgitリポジトリの初期化のgit
リポジトリのディレクトリに切り替えるには、CD〜/書類/ simpleapp番号を
6.サーバー・マシンにクライアントが生成した公開鍵ファイルを追加します。
サービス・マシンの/ home / userディレクトリに.sshディレクトリ、およびセットの権限を作成します。
MKDIRの〜/ .ssh#ディレクトリを作成します sudoのはchmodのu + rwxのの〜/ .ssh # 、読んで追加書き込み、および現在のユーザーの権限を実行します
その後の.sshディレクトリ・サービス・マシンにファイルをauthorized_keysにするために、クライアントによって生成されたコンテンツファイルid_rsa.pubをコピーして、読み取りおよび書き込み権限を追加。(私だけ非対称鍵のため、ここで公開鍵ファイルの内容)
エコー"SSH-RSA AAAAB3NzaC1yc2EAAAADAQABAAABAQDCMoyR + tfOqbRNvWW1mofxsOWHukYhBtwfAJNJmwb16pZ4Kj / ErvmvV7mromt3 + Ojを/ GSRIHPjf2SXcS + IHiO1LXCvgwQ7NIpx1W / tDUhL5Eg17A15Hs6x8AvGpJ8K6f5DQ8I0jKg3JOvhAj + sw7OFlN5dte1Dzs0fEyRp6Ji / m6HTM / T1plHkQZ0PCH8yE9JfDF / 0ReAbcNhOQeWFgV2f / mhiGdnVV0MvyMyA5Df / KDR + IlrTHkSrz9Ijz88cyz7QYau4NgTxKxM7S9qG8WyjNnpbbrt6ORFxYhSIRgPz + U05PbiV2Iuuwte20rLwFCKFy + WmFqKVgCE9Mf5EEthXVロリポップ@ロリポップ-MS-7850">の〜/ .ssh / authorized_keysに sudoのauthorized_keysには、読み取りと書き込みの権限を追加するには、現在のユーザーのためのchmod + RW〜U /の.ssh /#
サーバー・マシン上のポスト受信ファイルの設定7. Gitのフック
simpleapp / .gitサービスマシン/ hooksディレクトリにあるポスト受け取るスクリプトファイルを作成し、ファイルがクライアントの提供するgit pushコマンドの後に受信され、自動的に実行されます。
vimの〜/書類/simpleapp/.git/hooks/post-receive #vim編集後の受信ファイル
ポスト受け、次の書類を記入:
#!/ binに/ bashが エコー10010 | sudoの-S ... APP_NAME = simpleapp APP_DIR = $ HOME /文档/ $ APP_NAME REVISION = $(exprのSUBSTR $(GitのREV-解析--verify HEAD)1 7) GIT_WORK_TREE = $ APP_DIR gitのチェックアウト-f CD $ APP_DIR sudoをドッキングウィンドウのビルド--tagの$ APP_NAME:$のREVISON。 sudoのドッキングウィンドウを停止$ APP_NAME sudoのドッキングウィンドウのrm $ APP_NAME sudoをドッキングウィンドウで実行-d --name $ APP_NAME -p 80:80 $ APP_NAME:$ REVISON
ファイルの説明:
APP_NAME:アプリケーションの現在の名前、同じニーズやgitリポジトリの名前
APP_FIR:リポジトリのディレクトリパスを設定します
Gitのチェックアウト-f:倉庫にソースコードを押して保存し、我々は変数を設定する必要がありますGIT_WORK_TREE
CD:リポジトリのディレクトリに移動します
ドッキングウィンドウ:他の操作を実行しているミラー、ミラーを作成しました。
ファイルが作成された後、実行権限を追加します。
sudo chmodの+ X〜/ドキュメント/simpleapp/.git/hooks/post-receive
ドッキングウィンドウのコマンドを実行できるサービスマシンでsudoを追加しないためには、サーバー・マシン上でコマンドを実行する必要があります。
sudoのUSERMOD -Agドッカ$ {USER} #はドッキングウィンドウのユーザーグループを追加し、近く現在のユーザグループを追加 sudoのドッキングウィンドウサービスの再起動#再開ドッキングウィンドウのサービス の再起動#のリブート
再起動するには注意し、ログオフし、この実験は、のみ動作するように再起動したときに、私は動作しません。再起動後、ドッキングウィンドウを使用すると、sudoコマンドの実行ドッキングウィンドウなしで成功できるかどうかを判断することができるかどうかを確認するために、このようなドッキングウィンドウの画像のような任意のコマンドを実行します。成功した下記のように:
クライアント8.コードをプッシュしようとし
最初のコマンドを実行し、クライアント上でリモートリポジトリのアドレスを追加します。
リモートgitの原点[email protected]を追加します。サービス機械倉庫アドレス文書/ simpleappの#gitを追加
コマンドの使用方法:起源<-serviceマシンのユーザー名>を追加し、リモートgitの@ <ドメイン名またはIPサービスマシン>:ローカルユーザーディレクトリの下のgitリポジトリのディレクトリサービス。
その後、倉庫サーバをプッシュし始めた、コマンドを実行します。
原点マスター-u gitのプッシュ
ディスカバリサービスマシンは無視するように設定さreceive.denyCurrentBranch、参照設定することが要求されますと言って、拒否したhttps://www.cnblogs.com/cosiray/archive/2012/06/01/2530967.htmlの中で、-serviceマシン simpleappディレクトリ編集は.git / configファイルを変更し、次のコードを追加します:
[受信] denyCurrentBranch =無視
クライアントに戻る、編集した後、倉庫には、コマンドを実行し、サーバにプッシュ:
原点マスター-u gitのプッシュ
...
あなたは、あなたがサーバーにアクセスするには、ブラウザが正常にプログラムを実行するかどうかを確認しようとすることができ、プッシュが成功した参照、およびサーバー上のCMD nodejs app.jsの実装を見ることができます。クライアントのブラウザ入力192.168.1.246:80で、私は、ローカルIPアドレスが192.168.1.246で奉仕するためにここにいる、ポート上のプログラムは80セット。
サーバが自動的にそれを元に提出されるたびに実行できるように我々は、正常に実行プログラムを見ることができます。
9.サービスマシン上で情報]ドッキングウィンドウを確認
サーバーが正常にイメージを作成し、成功したドッキングウィンドウコンテナを実行するので、実行して、サーバー上でコマンドを実行するためのプログラム:
ドッキングウィンドウの画像#ビューミラー ドッカーPS コンテナ#ビューのランニング
あなたは、作成したsimpleappミラーとコンテナsimpleappを見ることができます。