背景
私はJavaエンジニアです。自宅にいるときに、デスクトップ、ラップトップ、および仮想マシンを使用してMavenプロジェクトをコンパイルおよびビルドできます。自宅にMavenプライベートサーバーがある場合、ビルド速度の影響は明らかです。
もつれた
プライベートサーバーを展開するコンピューターを準備した後、起動するのに24時間かかりますか?少し無駄に見えるので、使用するときはオンにして、終わったらオフにしてください。少し面倒です(怠惰で私を叱りたいですか?あなたは正しく叱られました...)
Synology DS218 +
Synology DS218 +は自宅にあります。長い間、家族全員にサービスを提供するために24時間オンになっています。私服をここに持参できれば、以前のもつれはなくなったようです。
- 下の画像は、DS218 +が購入したばかりのものです。2台のNASハードドライブが安定して稼働しています。
- 次の画像はオンラインで購入したメモリスティックです。現在、合計2 + 8 = 10Gのメモリであり、十分なメモリがあれば十分です。
アイデア
実際、操作は非常に簡単です。SynologyにはDockerサービスがあり、Dockerを使用してネクサスを展開できるため、この記事は実際にはSynology Dockerの基本的な操作の記録です。以下に注意点を示します。
- コンテナ港
- コンテナのデータ量
- ファイルの権限
- ログインコンテナ操作
環境情報
- Synologyシステム:DSM 6.2.2-24922 Update 4
- ネクサスを導入する前のSynologyのリソース:
- 以下に示すように、Dockerを開き、レジストリページでnexusを検索し、sonatype / nexus3を見つけ、ラベル3.19.1を選択します。
- 画像がダウンロードされたら、画像ページで画像を選択し、開始ボタンをクリックします。
- 起動ページで[ 詳細設定]をクリックします。
- コンテナが自動的に再起動し、デスクトップショートカットが作成されるようにします。
- データボリュームマッピングの場合、次の図に従って、ホストマシンにnexus3という名前の新しいフォルダーを作成します。
- 次に、コンテナの/ nexus-dataディレクトリをホストのnexus3にマップして、コンテナのすべてのデータを保存できるようにします。
- ポートマッピング。ホストの8081ポートが占有されていない場合は、8081に直接マッピングします。そうでない場合は、占有されていないポートに変更します。
- 設定が完了したら、ウィザードを確認してコンテナを実行し、 [ 適用 ]をクリックしてnexus3コンテナを作成します。
- 私はそれがこのように行われたと思ったが、多くのエラーメッセージがポップアップすることを期待していなかった:
- 以下に示すように、コンテナログを表示します。
- 私はすぐに問題を見つけました:ホストがコンテナーのディレクトリにマップされ、コンテナープロセスがアクセス許可のために書き込めませんでした:
- セキュリティ上の理由から、ホストのnexus3ディレクトリとコンテナは自由に操作できません。ここでは、次の図に示すように、このディレクトリの書き込み権限を解放し、File Stationを使用してこのディレクトリを設定します。
- 書き込み権限を増やします。
- 上記の操作が完了すると、予期しない終了が発生するたびにコンテナーが自動的に再起動するため、待機が始まります。最後に、正常な起動のログが表示されます。
操作nexus3
- SynologyのイントラネットIPは192.168.50.42なので、ブラウザのアクセスアドレス:http://192.168.50.42:8081で、おなじみのページが表示されます。
- 次に直面する質問は、ログインパスワードの取得方法です。nexusのデフォルトパスワードはコンテナの/nexus-data/admin.passwordファイルに格納されているため、2つの方法で取得できます。
- コンテナの/ nexus-dataディレクトリは、ホストマシンのdocker / nexus3ディレクトリにマップされているため、File Statiionを使用してディレクトリを開き、admin.passwordファイルをダウンロードして、テキストエディターで開きます。
- 別の方法は、コンテナを入力してファイルを表示することです。操作は次のとおりです。コマンドを追加するコンテナを選択します。
- ポップアップする入力ボックスに「/ bin / bash」と入力すると、新しいbashプロセスがコンテナの名前空間の下に作成されます。このプロセスは、/ nexus-data / admin.passwordを含む同じ名前空間の下のすべてのファイルを表示してから、catコマンドを使用できます。ファイルの内容を確認するだけです。
- パスワードを取得したら、ページのネクサスにログインできます。アカウントはadminです。
- ログインに成功したら、プロンプトに従って新しいパスワードを設定します。
- 次はネクサスの通常の操作です。ここではこれ以上説明しません。ここで集中してみましょう。管理者権限を持つ新しいアカウントbolingcavalryを作成し、パスワードを123456に設定します。
- プライベートサーバーの中央倉庫のアドレスを取得します。
- この時点で、展開は成功しています。次に、プライベートサーバーが使いやすいかどうかを確認します。
Nexusサービスを確認するために2台のコンピューターを準備する
次の図は、プライベートサーバーを展開した後のアーキテクチャ図です
。2台のコンピューター、コンピューターAとコンピューターBを準備して、新しく展開されたNexus3が中央倉庫のjarパッケージをキャッシュできることを確認します(仮想マシンを使用して2台のコンピューターを作成することもできます);
- コンピューターAとBの両方にJDK8とMaven3がインストールされています。
- コンピューターAとBの両方のmavenディレクトリーにあるconf / settings.xmlファイルは、次のように変更する必要があります。
- サーバーノードを見つけて、以下を追加します。
<server>
<id>maven-central</id>
<username>bolingcavalry</username>
<password>123456</password>
</server>
- ミラーノードを見つけて、次のコンテンツを追加します。URLのコンテンツは、前に取得したmaven-centralウェアハウスのアドレスです。
<mirror>
<id>maven-central</id>
<mirrorOf>*</mirrorOf>
<url>http://192.168.50.42:8081/repository/maven-central/</url>
</mirror>
コンピューターAでビルドプロジェクトをコンパイルします(遅いはずです)。
Aコンピューターでオープンソースプロジェクトspring-cloud-alibabaをコンパイルします。現在、Nexusにはjarパッケージがキャッシュされていないため、依存するすべてのjarを中央のウェアハウスからダウンロードする必要があるため、コンパイル速度が非常に遅くなります。試してみましょう。
- コンピューターAにログインして、spring-cloud-alibabaの2.1.1.RELEASEアーカイブパッケージをダウンロードします。
wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz
- ダウンロードしたファイルを解凍します。
tar -zxvf v2.1.1.RELEASE.tar.gz
- 解凍したディレクトリを入力してください:
cd spring-cloud-alibaba-2.1.1.RELEASE/
- コンパイル:
mvn clean compile -U -DskipTests
- 下の赤いボックスに示すように、コンパイルは完了しています。このコンパイルには7分32秒かかります。
- 以下に示すように、Nexusウェブページをご覧ください。現時点では、多くのjarファイルがキャッシュされています。
Bコンピューターでビルドプロジェクトをコンパイルします(すぐに実行する必要があります)
- Bコンピューターで同じ操作を行います。現時点では、コンパイルに必要なjarパッケージがNexusにキャッシュされています。コンパイルプロセスは大幅に高速化されています。最終的な操作結果は次の図のようになり、わずか1分8秒です。
- ネクサスサービスが占有しているリソースを見ると、大量のメモリが使用されています。メモリスティックが追加されていない場合は、独自の2Gメモリを使用するとSynology全体が下がると推定されます。コンテナはメモリを制限できますが、ネクサスプロセスの頻繁なGCも発生します。それはまだ非常にカードであるため、十分なメモリを確保する必要があります。これ
までのところ、Synology DS218 +のMavenプライベートサーバーを展開する実際の戦闘は完了しています。将来、自宅のコードは安定したプライベートサーバーと見なすことができ、注意する必要はなく、いつでも利用できます。