[ハンドグリップシリーズの]Jenkins+Docker自動化展開vueプロジェクト
8743 ワード
紹介する
このシリーズでは、フロントエンドとバックエンドのプロジェクトを自動化する方法を紹介します.
本編では、自動化した展開の仕方を紹介します.
次のページでは、どう自動化してnodejsプロジェクトを展開しますか?
ここはmac osです.linuxを使えば、多くの下の問題にぶつかりません.
関連するアプリケーション junnkins docker 全体の流れ
まず、私達は私達のコンピュータをサーバーに想像します.もちろんサーバがあれば、直接にサーバーにいてもいいです.以下の操作を実行します.
ここは便利のために、直接に私のコンピュータ(mac)をサーバーにしました.この中に穴がたくさんあることを証明します.
以下のローカルとサーバーの違いに注意してください.実はここは全部私達のコンピュータです.私達はサーバー(ここは私達のmacです)にdocker をインストールします.私達はサーバー(ここは私達のmacです)にジャッキー をdockerでインストールしました.私達は当地でvueプロジェクトを新築し、github にプッシュします.私達はローカルにサーバー上のjunnkinsにアクセスします.つまり、ウェブサイトを開きます.http://localhost:8081 (サーバーならここlocal hostをあなたのサーバーのipに変えます) 私達はjecinsでgithbのプロジェクトを引き延ばしました.junnkinsのインストールディレクトリの中の までです. junnkinsは を実行しました.私達はjecins sshで私達のサーバ に接続します.
ここではPublish Over SSHプラグインをインストールして、サーバーを配置する必要があります.は、以下の動作をサーバ(ここは私たちのmac)で実行する .
私たちのvueプロジェクトをミラーリングに包装します.
このミラーでコンテナを作ります.
dockerをインストールする
ご参考くださいhttps://www.runoob.com/docker...
私はmacです.インストールが成功したら、ステータスバーにdockerのアイコンがあります.
このときコマンドライン入力
dockerインストール
余談:あなたもdockerを通してインストールしなくてもいいです.私のもう一つの文章を参照してください.
jenkinsのミラーを検索します
https://hub.docker.com/dockerがイメージを保存するところです.画面は以下の通りです.
私たちはインストールしたいjenkinsのミラーを探してみます.
注意:最初はdockerの公式メンテナンスバージョンですが、長い間更新されていません.古いバージョンです.ですから、ここで二つ目のインストールをします.これはjuninsのメンテナンスです.
ps:コマンドラインで検索することもできます.コマンドは
dockerインストール
新しいディレクトリ私はここにいます.
コマンドを実行
インストールプロセスを待っています...
同時に私達は/Users/isaacho/Dcuments/appication/docker/jecinsを見ることができます.ホームディレクトリの下で多くのファイルが生成されました.
コマンドの説明:
--name jenkins(u)nodeはあなたの容器の名前を表しています.node
-dはバックグラウンドで動作することを表します.
-v/Users/isaacho/Dcuments/appication/docker/jecins_home:/var/jokins_ホームは私たちが新しく建てたjenkinsを表示します.ホームディレクトリがコンテナに写ります.ホームディレクトリ
-pはポートマップです.
設定
ブラウザは
私たちは以下のコマンドで管理者のパスワードを取得します.
おすすめのプラグインを選択してプラグインをインストールしてお待ちください.
管理者ユーザを作成
保存をクリックして完了します.
クリックしてjenkinsを使い始めます.
sshプラグインのインストール
システム管理をクリックします
設定ssh
システム管理=>configure system=>を一番下に引く
Test Configrationをクリックして、successが配置成功を説明します.保存をクリックしてください.
成功しなかったら、私達のパソコンがリモートログインを開けていないということです.
ソリューション:
システムプリファレンス設定を選択->共有を選択->リモートログインをクリックしてください.
上のhostnameはここのIPアドレスです.
nodeプラグインをインストール
nodeプラグインはnodeプロジェクトを走る時使うべきで、ここは先にインストールします.
システム管理をクリックします
インストールが完了するまで待つ
インストールnodejsバージョンを選択します.
vueプロジェクトを準備します.
アイテムはすでにgithubにアップロードされました.
vue cliはvueプロジェクトを作成します.
私たちはvue-cli 3を使って直接にvueプロジェクトを作ります.
注意:ここであなたのnodeバージョンが必要です.8.9以上のバージョンが必要です.
Hello World.vueコンポーネントを変更して、ページを書き換えて、axiosに参加して要求を送ります.
nginxプロファイルを作成
nginxの配置については、先端が知りたいNgixを見てください.
プロジェクトのルートディレクトリの下に新しいnginx.comを作成します.
プロジェクトのルートディレクトリの下にDocerfileを新規作成します.
このプロジェクトをgithubにアップロードします.
ここでは見せません.このプロジェクトのgithubアドレスはhttps://github.com/repototest...
jecins展開vueプロジェクト
新しいタスク
最初のshell命令はbuild私達のvueプロジェクトで、プロジェクトのルートディレクトリの下でdistディレクトリを生成します.
詳細な説明
起こり得る問題 dockerはコマンドではありません.
この問題が発生した原因は、私達がsshでmacを接続する時、命令行は/usr/binの中の命令しか使えませんが、私達のdocker命令は/usr/local/binの中に置いたので、見つけられません.解決策は/usr/local/bin/dockerを上のdockerの代わりにします.
すなわち
クリックしてすぐに構築します
部署を待つ.
この小さい円をクリックしてコンソールの出力を見ることができます.
私達のプロジェクトが
アクセスhttp://localhost:8083/
これで私たちはvueプロジェクトの展開に成功しました.
起こり得る問題 Gethttps://registry-1.docker.io/v2/: net/http:request cance led while waiting for connection(Cliennt.Timeout exceed while awaiting headers) この文章は1文の多発プラットフォームArtPubから自動的に発表されます.
このシリーズでは、フロントエンドとバックエンドのプロジェクトを自動化する方法を紹介します.
本編では、自動化した展開の仕方を紹介します.
次のページでは、どう自動化してnodejsプロジェクトを展開しますか?
ここはmac osです.linuxを使えば、多くの下の問題にぶつかりません.
関連するアプリケーション
まず、私達は私達のコンピュータをサーバーに想像します.もちろんサーバがあれば、直接にサーバーにいてもいいです.以下の操作を実行します.
ここは便利のために、直接に私のコンピュータ(mac)をサーバーにしました.この中に穴がたくさんあることを証明します.
以下のローカルとサーバーの違いに注意してください.実はここは全部私達のコンピュータです.
workspace/
ディレクトリ shell
を使ってコマンドnpm install
npm run build
ここでは私達はjenkinsにnodejsプラグインをインストールしたいです.ここではPublish Over SSHプラグインをインストールして、サーバーを配置する必要があります.
私たちのvueプロジェクトをミラーリングに包装します.
このミラーでコンテナを作ります.
dockerをインストールする
ご参考くださいhttps://www.runoob.com/docker...
私はmacです.インストールが成功したら、ステータスバーにdockerのアイコンがあります.
このときコマンドライン入力
docker -v
インストール成功を説明します.dockerインストール
余談:あなたもdockerを通してインストールしなくてもいいです.私のもう一つの文章を参照してください.
jenkinsのミラーを検索します
https://hub.docker.com/dockerがイメージを保存するところです.画面は以下の通りです.
私たちはインストールしたいjenkinsのミラーを探してみます.
注意:最初はdockerの公式メンテナンスバージョンですが、長い間更新されていません.古いバージョンです.ですから、ここで二つ目のインストールをします.これはjuninsのメンテナンスです.
ps:コマンドラインで検索することもできます.コマンドは
docker search jenkins
です.dockerインストール
新しいディレクトリ私はここにいます.
コマンドを実行
docker run --name jenkins_node -d -v /Users/isaacho/Documents/application/docker/jenkins_home:/var/jenkins_home -p 8081:8080 -p 50000:50000 jenkins/jenkins:lts
注意:ここでは上の命令をそのままコピーしないでください./Users/isaacho/Docoments/appication/docker/jecins_ホームを新しいディレクトリに変えます.同様に次の場合/Users/isaacho/Dcuments/appication/docker/jecins_ホームは全部あなたのカタログに変えなければなりません.インストールプロセスを待っています...
http://localhost:8081
を開けたら、インストールが成功したと説明します.同時に私達は/Users/isaacho/Dcuments/appication/docker/jecinsを見ることができます.ホームディレクトリの下で多くのファイルが生成されました.
コマンドの説明:
--name jenkins(u)nodeはあなたの容器の名前を表しています.node
-dはバックグラウンドで動作することを表します.
-v/Users/isaacho/Dcuments/appication/docker/jecins_home:/var/jokins_ホームは私たちが新しく建てたjenkinsを表示します.ホームディレクトリがコンテナに写ります.ホームディレクトリ
-pはポートマップです.
設定
ブラウザは
http://localhost:8081
を開いて、画面は以下の通りです.私たちは以下のコマンドで管理者のパスワードを取得します.
cat /Users/isaacho/Documents/application/docker/jenkins_home/secrets/initialAdminPassword
クリックして続けますおすすめのプラグインを選択してプラグインをインストールしてお待ちください.
管理者ユーザを作成
保存をクリックして完了します.
クリックしてjenkinsを使い始めます.
sshプラグインのインストール
システム管理をクリックします
Publish Over SSH
を検索してインストールします.設定ssh
システム管理=>configure system=>を一番下に引く
Test Configrationをクリックして、successが配置成功を説明します.保存をクリックしてください.
成功しなかったら、私達のパソコンがリモートログインを開けていないということです.
ソリューション:
システムプリファレンス設定を選択->共有を選択->リモートログインをクリックしてください.
上のhostnameはここのIPアドレスです.
nodeプラグインをインストール
nodeプラグインはnodeプロジェクトを走る時使うべきで、ここは先にインストールします.
システム管理をクリックします
インストールが完了するまで待つ
インストールnodejsバージョンを選択します.
vueプロジェクトを準備します.
アイテムはすでにgithubにアップロードされました.
vue cliはvueプロジェクトを作成します.
私たちはvue-cli 3を使って直接にvueプロジェクトを作ります.
注意:ここであなたのnodeバージョンが必要です.8.9以上のバージョンが必要です.
vue create vueclidemoapp
書き換えるHello World.vueコンポーネントを変更して、ページを書き換えて、axiosに参加して要求を送ります.
import axios from 'axios';
axios.get('/api', {
params: {},
}).then((res) => {
console.log(res);
});
...
画面は以下の通りですnginxプロファイルを作成
nginxの配置については、先端が知りたいNgixを見てください.
プロジェクトのルートディレクトリの下に新しいnginx.comを作成します.
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
gzip on;
gzip_types text/plain application/javascript text/css;
# server
server {
#
listen 80;
# host
server_name localhost;
#
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
include /etc/nginx/conf.d/*.conf;
}
Docerfileを作成しますプロジェクトのルートディレクトリの下にDocerfileを新規作成します.
FROM nginx
EXPOSE 80
この時あなたのディレクトリ構造はこうです.このプロジェクトをgithubにアップロードします.
ここでは見せません.このプロジェクトのgithubアドレスはhttps://github.com/repototest...
jecins展開vueプロジェクト
新しいタスク
最初のshell命令はbuild私達のvueプロジェクトで、プロジェクトのルートディレクトリの下でdistディレクトリを生成します.
echo $PATH
node -v
npm -v
npm install
npm run build
第二のshellコマンドは、dockerのミラーリングと走dockerサービスを構築するために使用されます.docker stop vuenginxapp || true \
&& docker rm vuenginxapp || true \
&& cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp \
&& docker build -t vuenginxapp . \
&& docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
docker stop vuenginxapp
は、vuenginxap容器を停止するために使用される.sudo docker rm vuenginxapp
は、vuenginxap容器を削除するために使用される.cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp
は私達のプロジェクトディレクトリに入ります.ここで自分のディレクトリに変えなければなりません.つまり(yourpath)/jenkins_home/workspace/vueclidemoapp
です.yourpathは上の方にあるjecins_です.ホームディレクトリ時のディレクトリdocker build -t vuenginxapp .
は、buildイメージを表し、名前はvuenginxapです.docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
は私達の上のvuenginxapがミラー生成容器であることを示しています.詳細な説明
-d
は、バックグラウンドで実行される.-p 8083:80
はコンテナの80ポートのマッピングを私達が訪問した8083ポートです.80ポートはinxデフォルトのポート番号です.--name vuenginxapp
容器名はvuenginxapです.-v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html
私たちが生成したdistディレクトリをコンテナに載せる/usr/share/inx/htmlは、nginxのデフォルトのhttpディレクトリです.-v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf
は、私たちのnginx.comをコンテナの/etc/inx/nginx.com nfにマウントします./etc/nginx/nginx.com nfはnginxデフォルトのプロファイルです.vuenginxapp
は私達の鏡像の名前です.起こり得る問題
この問題が発生した原因は、私達がsshでmacを接続する時、命令行は/usr/binの中の命令しか使えませんが、私達のdocker命令は/usr/local/binの中に置いたので、見つけられません.解決策は/usr/local/bin/dockerを上のdockerの代わりにします.
すなわち
/usr/local/bin/docker stop vuenginxapp || true \
&& /usr/local/bin/docker rm vuenginxapp || true \
&& cd /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp \
&& /usr/local/bin/docker build -t vuenginxapp . \
&& /usr/local/bin/docker run -d -p 8083:80 --name vuenginxapp -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/dist:/usr/share/nginx/html -v /Users/isaacho/Documents/application/docker/jenkins_home/workspace/vueclidemoapp/nginx.conf:/etc/nginx/nginx.conf vuenginxapp
構築項目クリックしてすぐに構築します
部署を待つ.
この小さい円をクリックしてコンソールの出力を見ることができます.
私達のプロジェクトが
(yourpath)/jenkins_home/workspace
に引っ張られたのが見えます.アクセスhttp://localhost:8083/
これで私たちはvueプロジェクトの展開に成功しました.
起こり得る問題