ワンクリック暗号化を考えて、SpringbootをDockerコンテナにデプロイします

1.環境への準備

  1. Dockerをインストールするための1つのcentosサーバー(インストールプロセスについては、Linuxを参照してDockerをSSLモードでインストールしてください
  2. アイディア
  3. Dockerリンク証明書

2.アイデアconfiguredockerlink

  1. 設定でプラグインを開きます
  2. dockerを選択し、docker構成情報を入力して、証明書ディレクトリを選択します
  3. 接続は成功しまし
    ここに画像の説明を挿入
  4. ここで私たちのコンテナをチェックしてください
    ここに画像の説明を挿入

3.mysqlコンテナを構成します

springbootプロジェクトはmysqlを使用する必要があるため、mysqlをインストールしてdockerに一緒にデプロイする必要があります。

dockerがインストールされているLinuxサーバーで次のコマンドを実行します

  1. 最新バージョンのmysqlミラーをプルする
docker pull mysql

ここに画像の説明を挿入

  1. mysqlイメージが正常にプルされたかどうかを確認します
docker images

ここに画像の説明を挿入

  1. mysqlコンテナを起動します
mkdir -p /home/project/mysql/{
    
    data,conf}
docker run -di -p 3306:3306 --restart=always --privileged=true -v /home/project/mysql/conf:/etc/mysql/conf.d -v /home/project/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=yinfeng --name=mysql  mysql

-eMYSQL_ROOT_PASSWORDmysqlルートアカウントyinfengのログインパスワードを設定します。
-di dはデーモンプロセスとしてバックグラウンドで実行することを意味し、iはコンテナを実行することを意味します

3.1コンテナが正常に起動したかどうかを確認します

docker ps

ここに画像の説明を挿入

3.2AlibabaCloudセキュリティグループがポート3306を開きます

ここに画像の説明を挿入

3.3 navicatリンクを使用してテストすると、接続は成功します

ここに画像の説明を挿入
ここに画像の説明を挿入

4.springbootpomファイルの構成

  1. 単純なspringbootプロジェクトを作成します。
    これが私のプロジェクト構造全体です。
    ここに画像の説明を挿入
  2. docker-maven-pluginを構成します。このファイルは非常に重要であり、慎重に構成する必要があります
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <!--将插件绑定在某个phase执行-->
    <executions>
        <execution>
            <id>build-image</id>
            <!--用户只需执行mvn package ,就会自动执行mvn docker:build-->
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>

    <configuration>
        <!--指定生成的镜像名,这里是我们的作者名+项目名-->
        <imageName>yinfeng/${project.artifactId}</imageName>

        <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest-->
        <imageTags>
            <imageTag>latest</imageTag>
        </imageTags>
        <rm>true</rm>

        <!--指定基础镜像jdk1.8-->
        <baseImage>java:8</baseImage>

        <!--切换到logs目录-->
        <workdir>/logs</workdir>

        <!--查看我们的java版本-->
        <cmd>["java", "-version"]</cmd>

        <!--${project.build.finalName}.jar是打包后生成的jar包的名字 加入UTF-8编码避免中文乱码-->
        <entryPoint>["java", "-Dfile.encoding=UTF-8", "-jar", "/${project.build.finalName}.jar"]</entryPoint>

        <!--指定远程 docker api地址-->
        <dockerHost>https://服务器ip:2375</dockerHost>

        <!--指定ca证书文件路径地址 -->
        <dockerCertPath>${project.basedir}/src/main/resources/ca</dockerCertPath>

        <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                <directory>${project.build.directory}</directory>
                <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>

    </configuration>
</plugin>

ここに画像の説明を挿入
3. springbootイメージ
をテストしてパッケージ化し、図の手順に従います。
ここに画像の説明を挿入
パッケージ化されたイメージはログに成功し、最初のパッケージ化速度は遅く、
ここに画像の説明を挿入
しばらくお待ちください。Dockerサービスにパッケージ化したばかりのイメージを表示します
ここに画像の説明を挿入
。4。デプロイします。コンテナにパッケージ化された画像

4.1.画像を選択してコンテナを作成します

ここに画像の説明を挿入

4.2コンテナパラメータを設定します。httpsプロトコルを使用しているため、443ポートマッピングが開かれ、必要に応じて対応するポートを独自のコンテナにマッピングできます。

--net=host -p 443:443  -v /logs:/logs

-pはポートマッピングです。-v
はデータボリュームマッピングです。/logsはログディレクトリです。これはクラウドホストでログを表示するのに便利です。
-net=hostは、サーバーのローカルネットワークを直接使用するコンテナです。プロジェクトに便利なdockernetworkコンテナ内のmysqlデータベースに直接接続します

ここに画像の説明を挿入

4.3コンテナを起動します

ここに画像の説明を挿入

4.4起動成功ログ

ここに画像の説明を挿入

4.5テストすると、直接正常にアクセスでき、バックグラウンドログも利用できます

ここに画像の説明を挿入
ここに画像の説明を挿入

5.Linuxの時限タスクを構成します

スケジュールされたタスクを構成する理由
パッケージ化するたびに最後のイメージを無効にしますが、dockerはそれを自動的に削除しないため、多くのスペースを占有します。したがって、これらのガベージイメージを削除するようにスケジュールされたタスクを構成する必要があります。

ここに画像の説明を挿入
まず、Linuxサーバーのミラーをクリアするshスクリプトを作成します

vi /logs/deleteImg.sh

次に、次のコードを貼り付けて保存して終了します

#清空none镜像
docker rmi `docker images -q -f dangling=true`

ここに画像の説明を挿入
次に、スケジュールされたタスクの構成に進みます

crontab -e

次に、キーを押して入力モードに入り、次のコードを貼り付けて、最後に保存して終了します。スクリプトは、deleteImg.shスクリプトを実行して、毎日午前2時にミラーをクリアすることを意味します。

00 02 * * * /bin/bash /logs/deleteImg.sh

ここに画像の説明を挿入

6.まとめ

6.1現在、インターネット企業のデプロイ方法は一般的にdockerとk8sで行われているため、docker関連のデプロイ知識を学ぶ必要があります。6.2
このブログはエントリーレベルのdockerと見なすことができますが、完全に連携しています。アイデアとdocker、しかしdocker-maven -pluginの公式ドキュメントはあまり明確ではないので、この時点までしか構成できません。古いアイアンが3つの連続したウェーブでサポートすることを願っています。

おすすめ

転載: blog.csdn.net/a1774381324/article/details/121961051