idea de cifrado con un clic para implementar springboot en el contenedor docker

1. Preparación ambiental

  1. Un servidor centos para instalar docker (para el proceso de instalación, consulte linux para instalar docker en modo ssl )
  2. ocurrencia
  3. certificado de enlace docker

2. idea configurar enlace docker

  1. Abra el complemento en la configuración
  2. Seleccione la ventana acoplable , luego complete nuestra información de configuración de la ventana acoplable y seleccione el directorio del certificado
  3. La conexión es exitosa
    inserte la descripción de la imagen aquí
  4. Consulta nuestros contenedores aquí
    inserte la descripción de la imagen aquí

3. Configurar el contenedor mysql

Debido a que nuestro proyecto springboot necesita usar mysql, necesitamos instalar mysql e implementarlo en docker juntos.

Ejecute el siguiente comando en el servidor Linux con docker instalado

  1. Tire de la última versión de mysql mirror
docker pull mysql

inserte la descripción de la imagen aquí

  1. Compruebe si la imagen mysql se extrae con éxito
docker images

inserte la descripción de la imagen aquí

  1. iniciar el contenedor 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

-e MYSQL_ROOT_PASSWORD Establece la contraseña de inicio de sesión de la cuenta raíz mysql yinfeng.
-di d significa ejecutar en segundo plano como un proceso daemon, significa ejecutar el contenedor

3.1 Comprobar si el contenedor se ha iniciado correctamente

docker ps

inserte la descripción de la imagen aquí

3.2 El grupo de seguridad de Alibaba Cloud abre el puerto 3306

inserte la descripción de la imagen aquí

3.3 Use el enlace navicat para probar, la conexión es exitosa

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

4. configuración del archivo springboot pom

  1. Cree un proyecto springboot simple,
    esta es toda la estructura de mi proyecto
    inserte la descripción de la imagen aquí
  2. Configure docker-maven-plugin, este archivo es muy importante y debe configurarse con cuidado
<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>

inserte la descripción de la imagen aquí
3. Pruebe y empaquete la imagen Springboot
y siga los pasos de la figura. La
inserte la descripción de la imagen aquí
imagen empaquetada se registra correctamente, la primera velocidad de empaque es lenta, espere pacientemente por un
inserte la descripción de la imagen aquí
momento. Vea la imagen que acabamos de empaquetar en el servicio docker
inserte la descripción de la imagen aquí
4. Implemente el imagen empaquetada en el contenedor

4.1 Selecciona nuestra imagen para crear un contenedor

inserte la descripción de la imagen aquí

4.2 Configure los parámetros del contenedor, porque uso el protocolo https, por lo que se abre el mapeo del puerto 443, puede mapear el puerto correspondiente a su propio contenedor según sus necesidades

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

-p es el mapeo de puertos
-v es el mapeo de volumen de datos, /logs es nuestro directorio de registro, que es conveniente para ver registros en el host de la nube
-net=host es el contenedor que usa directamente la red local del servidor en lugar de estar aislado por el red acoplable, que es conveniente para nuestro proyecto Conéctese directamente a la base de datos mysql en el contenedor

inserte la descripción de la imagen aquí

4.3 Iniciar el contenedor

inserte la descripción de la imagen aquí

4.4 Registro de inicio exitoso

inserte la descripción de la imagen aquí

4.5 Pruébelo, puede acceder directamente a él con éxito, y el registro en segundo plano también está disponible

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

5. Configurar tareas cronometradas de Linux

¿Por qué configurar tareas programadas?
Porque cada vez que empaquetemos, invalidaremos la última imagen, pero docker no la eliminará automáticamente, lo que ocupa mucho espacio, por lo tanto, debemos configurar una tarea programada para eliminar estas imágenes basura.

inserte la descripción de la imagen aquí
Primero cree un script sh para borrar el espejo en nuestro servidor Linux

vi /logs/deleteImg.sh

Luego pegue el siguiente código y guarde y salga

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

inserte la descripción de la imagen aquí
Luego ve a configurar la tarea programada

crontab -e

Luego presione la tecla a para ingresar al modo de entrada, pegue el siguiente código y finalmente guarde y salga.El script significa ejecutar el script deleteImg.sh para borrar el espejo todos los días a las 2:00 a.m.

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

inserte la descripción de la imagen aquí

6. Resumen

6.1 Hoy en día, los métodos de implementación de las empresas de Internet generalmente se llevan a cabo mediante docker y k8s, por lo que es necesario aprender conocimientos de implementación relacionados con docker;
6.2 Este blog solo puede considerarse como un docker de nivel de entrada, pero también coopera perfectamente con idea y docker, pero docker-maven La documentación oficial de -plugin no es muy clara, por lo que solo puedo configurarlo hasta este punto, espero que los hierros antiguos lo admitan durante tres olas consecutivas.

Supongo que te gusta

Origin blog.csdn.net/a1774381324/article/details/121961051
Recomendado
Clasificación