バックエンド-「SpringbootプロジェクトをWindowsとLinuxのDockerにデプロイする

この記事の内容 

  1. win10(非キー)の下にdockerをインストールします: 
  2.  dockerの一般的なコマンド
  3. プロジェクトをDockerにデプロイし、発生したピットに対処します

1:win10の下にdockerをインストールします

Dockerはwin10Professionalバージョンへのインストールを許可しますが、多くのコンピューターにはwin10ホームバージョンがプリインストールされています。これをクラックしてインストールする必要があります。インストールに問題がある場合は、多くのオンラインチュートリアルがあります。ここにブログ(侵入)https ://blog.csdn.net/li_chunlong/article/details/105531124Dockerの2つの重要な概念は、コンテナーとミラーです。jarパッケージが仮想マシンで実行されるのと同じように、イメージはコンテナーで実行されます。イメージはjarパッケージと比較でき、コンテナーは仮想マシンに類似しています。

2:dockerの最も一般的なコマンド

  • 1、dockerバージョン
  • (インストール後に使用)バージョン番号を確認します。インストールが完了したら、このコマンドでバージョンを確認できます。
  • 2、docker info
  • (インストール後に使用)コンテナの構成情報を表示します。(docker infoコマンドを使用して接続中にエラーを出力する場合:http://%2F%.... Barabaraを取得します。次に、ピットを踏んだことを祝福し、再インストールします)。
  • 3、docker画像
  • (プロジェクト展開の前後に使用できます)ローカルで使用可能なミラーを確認します。パラメータ-aに従うことができます。例:docker images -aすべての画像を表示するには、
  • 4、docker rmi 8ae296c2e568
  • (画像の削除)画像IDに従って画像を削除します。画像IDはdocker imagesコマンドで表示できます。この例では、8ae296c2e568が画像IDです。もちろん、画像名やラベルから削除することもできます。
  • 5、docker ps
  •   (プロジェクト展開の前後に使用できます)使用中のコンテナーを確認します。パラメータ-aに従うことができます。例:docker ps -aを使用して、すべてのコンテナを表示できます。
  • 6、docker stop 622a496650c9
  •  (コンテナを停止する)コンテナIDに従ってコンテナを停止します。これは、このコンテナにデプロイされたプロジェクトを停止することとも理解できます。停止後、コンテナが占有していたポート番号が解放されます。
  • 7、docker rm 622a496650c9
  • (コンテナの削除)コンテナIDに基づいてコンテナを削除します。
  • 8、docker run -p 8083:8082メインシステム
  • (ミラーの開始)docker runは開始ミラーです。-p8083:8082の意味は、プロジェクトのポート8082マッピングを他のユーザーが呼び出すためのポート8083の形式で公開することです(nginxに多少似ています)。ポート8083左側はカスタマイズされています。右側のポート8082は、javaプログラムまたはtomcatのポート番号です。main-systemはイメージの名前です。コマンド全体は、ミラーリポジトリからメインシステムイメージを選択し、このイメージによってロードされたプログラムポート8082をポート番号8083として呼び出し元に公開することを意味します。このコマンドを使用した後、ポート番号8082のプログラムはコンテナー内で分離され、入口と出口はポート番号8083で公開され、コンピューター8082の現在のポート番号を占有しません。つまり、ポート番号8082は次のことができます。のコンピュータプログラムでも起動します。
  • 9、mvnパッケージ-Pテストdocker:build
  • (イメージをコンパイルします)mvn packageコマンドを使用してプロジェクトをjarパッケージにパッケージ化し、dockerに配置してコンパイルします

 ミラーとコンテナーの個人的な理解:最初に、mvnコマンドを使用してspringbootプロジェクトをjarパッケージに入力し、次にjarパッケージをdockerに配置してコンパイルします。つまり、上記の9番目のコマンドです。コンパイルが完了したら、ミラーが形成されます。これは、Dockerイメージを介して実行できます。次に、docker runコマンドを使用してイメージを開始します。これは、起動のためにイメージをコンテナーに入れるのと同じです。起動後、dockerpsを介して実行中のコンテナーを表示できます。

3:プロジェクトをDockerにデプロイし、遭遇した注目すべき点に対処します

springbootプロジェクトをdockerで実行するには、生命保険がdockerプラグインをpom.xmlファイルに追加してから、新しいDockerfileファイルを作成する必要があります。

   pom.xml:

<build>
        <plugins>
            <!-- Docker maven plugin -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                   <imageName>main-system</imageName><!--镜像名称,可自定义-->
                   <dockerDirectory>src/main/docker</dockerDirectory><!--Dockerfile文件路径,可自定义-->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
            <!-- Docker maven plugin -->
        </plugins>
    </build>

  Dockerfile:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD main-system-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
  • 最初のポイント:docker runコマンドを実行した後、そのようなファイルまたはディレクトリエラーは報告されません このエラーは主に、pom.xmlファイルのdockerプラグインのdockerDirectoryで指定されたパスがDockerfileファイルと同じパスにないため、同じパスに変更するだけです。   
  • 2番目のポイント:起動コマンドの実行後に、ドライバーがエンドポイントでの外部接続のプログラミングに失敗したaffectionate_greiderエラーが報告されます。これは、起動コマンドでポートを占有する実行中のコンテナーが既に存在するためです。dockerstopcontaineridコマンドを使用して実行中のコンテナを停止します
  • 3番目のポイント:docekr runコマンドを使用してプロジェクトを正常に開始した後、postmanを使用してプロジェクトのインターフェイスを呼び出すと、「127.0.0.1:6379に接続できません」というエラーが表示されます。これは、redis構成ファイルが原因です。まず、redisディレクトリでファイルredis.windows.confを見つけ、ファイル内のバインド127.0.0.1をコメントアウトし、同時にprotected-modeyesをprotected-modenoに変更します。時間、Redisサービスを再起動します。次に、spring.redis.host = 127.0.0.1の127.0.0.1をspringboot構成ファイルapplication.propertiesのローカルイントラネットIPに変更し、新しいイメージをコンパイルして実行します。
  • 4番目のポイント:起動エラーehcache.xml(そのようなファイルまたはディレクトリはありません)。この問題は長い間見られていました。mvnの通常のパッケージを実行しても問題ありませんが、dockerで実行するとこのエラーが報告され始めます。最後に、のファイルパスに問題があることがわかりました。キャッシュ構成ファイルehcache.xml。このファイルをsrc / main / resourcesの下に置き、shiro構成でこのファイルパスを読み取る必要があります。取得するには、this.getClass()。getClassLoader()。getResource( "ehcache.xml")。getPath()を使用する必要があります。それ。最後に、ehcache.xmlファイルのmaxEntriesLocalHeap属性とmaxElementsOnDisk属性をコメントアウトします。

上記は、WindowsでのDockerのデプロイです。しかし、現在のプログラムのほとんどはWindowsで開発され、Linuxにデプロイされています。次に、一般の人々の展開プロセスは

Windowsでの開発-"Windowsでミラーをコンパイル-" Windowsでミラーを送信-"Linuxでミラーをプル-" Linuxでミラーを実行。

Windowsでのコンパイルについては前の記事で説明しましたが、このプロセスには、Dockerのもう1つの重要な概念であるウェアハウスが含まれます。ウェアハウスはよく理解されています。コードブランチ用のgitウェアハウスや依存パッケージ用のmavenウェアハウスと同様に、ミラーイメージを保存する場所です。gitリポジトリにgithub、コーディング、コードクラウドなどの多くのホスティングプラットフォームがあるように、dockerミラーリポジトリにもdockerhub、Alibaba Cloudミラーリポジトリ、NetEaseミラーリポジトリがあります。次の手順では、Alibaba Cloud MirrorWarehouseを例として取り上げます。

  • 最初のステップは、Alibaba Cloudの公式Webサイトに登録してログインし、「Container Image Service」を検索して、「ManagementConsole」をクリックすることです。
  • 手順2:[ミラーウェアハウスの作成]をクリックし、カスタム名前空間、ウェアハウス名、および概要を入力します。[次へ]をクリックして、ローカルウェアハウスを選択します。作成後は以下のようになります。
  • ステップ3:Windowsでイメージを送信する:最初にDockerイメージを実行すると、コンパイルされたイメージをローカルウェアハウスで表示できます。(下の図のプッシュのアドレスはregistry.cn-shanghai.aliyuncs.com/manage-system/staging:1.0.0です。ここで、manage-systemは名前空間、stagingはウェアハウス名、1.0.0はウェアハウス名です。バージョン番号。これは定義から取得できます)、アップロードが完了したら、コンテナイメージサービスのイメージバージョンを開いて、アップロードされたばかりのイメージを確認します。
    D:\Work\Project\baoji-system\webapps\manage-system>docker login --username=yourname registry.cn-shanghai.aliyuncs.com
    Password:
    Login Succeeded
    
    D:\Work\Project\baoji-system\webapps\manage-system>docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    manage-system       latest              291da7fabc50        About an hour ago   183MB
    openjdk             8-jdk-alpine        a3562aa0b991        15 months ago       105MB
    
    D:\Work\Project\baoji-system\webapps\manage-system>docker tag a3562aa0b991 registry.cn-shanghai.aliyuncs.com/manage-system/staging:1.0.0
    
    D:\Work\Project\baoji-system\webapps\manage-system>docker push registry.cn-shanghai.aliyuncs.com/manage-system/staging:1.0.0
    The push refers to repository [registry.cn-shanghai.aliyuncs.com/manage-system/staging]
    ceaf9e1ebef5: Pushed
    9b9b7f3d56a0: Pushed
    f1b5933fe4b5: Pushed
    1.0.0: digest: sha256:44b3cea369c947527e266275cee85c71a81f20fc5076f6ebb5a13f19015dce71 size: 947
    

  • ステップ4:Linuxにミラーをインストールします。これが推奨されるブログです(侵入)https://blog.csdn.net/u014069688/article/details/100532774

  • ステップ5:鏡像を引き出します。最初にログインし、docker pullregistry.cn-shanghai.aliyuncs.com/nameSpace/depository:version-numと入力します。上記のように、nameSpaceは名前空間、depositoryはウェアハウス名、version-numはバージョン番号です。ここでは独自のものに置き換えられています。置換が完了したら、pullコマンドを入力します。エラーが発生した場合:デーモンからのエラー応答:xxx.xxxのプルアクセスが拒否されました。リポジトリが存在しないか、「dockerlogin」が必要な場合があります。この問題が発生した場合は注意してください。プルでは、​​Alibaba Cloudアクセラレータを設定する必要があります(ステップ6)。プルに問題がない場合は、ステップ6をスキップします。

  • 手順6:Alibaba CloudAcceleratorを構成する

    1:到docker的安装目录中去
    cd /etc/docker/
    2:编辑或创建docker配置文件daemon.json
    vi daemon.json
    输入i插入字符,将以下json配置粘贴进去
    {
      "registry-mirrors": ["https://brf9xytm.mirror.aliyuncs.com"]
    }
    
    按esc退出编辑模式,输入英文冒号: ,再输入wq保存文件
    3:重启docker服务
    systemctl daemon-reload
    systemctl restart docker

    構成が再開された後、ログインして再度プルすると、次のようにプルが成功します。

  • ステップ7:ミラーリングを実行します。このステップについては、この記事ですでに説明しています。正常に実行するには、次のコマンドを入力してみましょう。その中で、-pパラメータが言及されており、-dパラメータは、プログラムをバックグラウンドで実行することを意味します。入力後、他のコマンドの入力に影響を与えないコンテナIDの文字列を返します。

 これまでのところ、Dockerウェアハウス、ミラー、コンテナーの3つの重要なポイント、およびインストールと使用中に遭遇するピット、および展開プロセスはほぼ記述されています。ただし、Dockerに密接に関連するもう1つの技術的なポイントであるkubernetes(k8sクラスターデプロイメントには、後で更新するためのエネルギーがあります。

テキストに誤りがある場合は、訂正してください...

おすすめ

転載: blog.csdn.net/nienianzhi1744/article/details/107953467