Backend —— "Implementar el proyecto springboot en Docker en Windows y Linux

Contenido de este artículo 

  1. Instale Docker en win10 (sin clave): 
  2.  Comandos comunes de Docker
  3. Implementar el proyecto en la ventana acoplable y lidiar con los pozos encontrados

1: instale Docker en win10

Docker permite la instalación en la versión profesional win10, pero muchas computadoras tienen la versión casera win10 preinstalada, esto debe ser descifrado e instalado, hay muchos tutoriales en línea, si hay un problema con la instalación, aquí hay un blog (invasión) https : // blog.csdn.net/li_chunlong/article/details/105531124 . Aquí hay dos conceptos importantes de Docker: contenedor y espejo. La imagen se ejecuta en un contenedor, al igual que un paquete jar se ejecuta en una máquina virtual. La imagen se puede comparar con un paquete jar y el contenedor es análogo a una máquina virtual.

2: Los comandos más comunes de Docker

  • 1 、 versión docker
  • (Usar después de la instalación) Verifique el número de versión. Una vez completada la instalación, puede verificar la versión con este comando.
  • 2 、 información de la ventana acoplable
  • (Usar después de la instalación) Ver información de configuración del contenedor. (Si usa el comando docker info para generar un error durante la conexión: obtenga http: //%2F%....Barabara. Luego, felicitaciones por pisar el pozo, vuelva a instalarlo).
  • 3 、 imágenes de docker
  • (Se puede utilizar antes y después de la implementación del proyecto) Compruebe qué espejos están disponibles localmente. Puede seguir los parámetros -a, por ejemplo: docker images -a para ver todas las imágenes
  • 4 、 ventana acoplable rmi 8ae296c2e568
  • (Eliminar imagen) Elimina la imagen de acuerdo con el ID de IMAGEN. El ID de IMAGEN se puede ver mediante el comando de imágenes de la ventana acoplable. En este ejemplo, 8ae296c2e568 es el ID de IMAGEN. Por supuesto, también se puede eliminar según el nombre y la etiqueta de la imagen.
  • 5 、 acoplador ps
  •   (Se puede usar antes y después de la implementación del proyecto) Compruebe qué contenedores están en uso. Puede seguir los parámetros -a, por ejemplo: docker ps -a para ver todos los contenedores
  • 6 、 tope de la ventana acoplable 622a496650c9
  •  (Detener el contenedor) Detener el contenedor según el CONTAINER ID, que también puede entenderse como detener el proyecto desplegado en este contenedor. Después de detener, se libera el número de puerto que ocupa el contenedor.
  • Docker rm de 7 622a496650c9
  • (Eliminar contenedor) Elimina el contenedor según el ID DEL CONTENEDOR.
  • Docker run de 8 、 -p 8083: 8082 sistema principal
  • (Iniciar el espejo) docker run es el espejo de inicio. El significado de -p 8083: 8082 es exponer el mapeo del puerto 8082 del proyecto en forma de puerto 8083 para que otros lo llamen (algo similar a nginx). El puerto 8083 a la izquierda está personalizado y el puerto 8082 a la derecha es el número de puerto del programa java o tomcat. main-system es el nombre de la imagen. Todo el comando significa seleccionar la imagen del sistema principal del repositorio espejo y exponer el puerto del programa 8082 cargado por esta imagen a la persona que llama como el número de puerto 8083. Después de usar este comando, el programa con número de puerto 8082 se aísla en el contenedor, y la entrada y salida se exponen con el número de puerto 8083, y no ocupará el número de puerto actual de la computadora 8082, lo que significa que un número de puerto 8082 puede también se puede iniciar en el programa informático de.
  • 9 、 paquete mvn -P test docker: build
  • (Compile la imagen) Empaquete el proyecto en un paquete jar a través del comando mvn package y colóquelo en la ventana acoplable para compilar

 Comprensión personal de espejos y contenedores: primero, use el comando mvn para escribir el proyecto springboot en un paquete jar, y luego coloque el paquete jar en la ventana acoplable para compilar, es decir, el noveno comando anterior. Una vez completada la compilación, un espejo se forma, lo que se puede hacer a través de las imágenes de la ventana acoplable ver. Luego, inicie la imagen mediante el comando docker run, que equivale a poner la imagen en el contenedor para el inicio. Después del inicio, puede ver el contenedor en ejecución a través de docker ps.

3: Implemente el proyecto en la ventana acoplable y aborde los puntos destacados encontrados

Para permitir que el proyecto springboot se ejecute en la ventana acoplable, el seguro de vida debe agregar el complemento de la ventana acoplable al archivo pom.xml y luego crear un nuevo archivo 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"]
  • El primer punto: No hay  tal  archivo  o  directorio de error se informa después de ejecutar el comando ventana acoplable plazo . Este error se debe principalmente a que la ruta especificada en el dockerDirectory del complemento de la ventana acoplable en el archivo pom.xml no está en la misma ruta que el archivo Dockerfile, así que cámbielo por la misma ruta.
  • El segundo punto: El controlador falló al programar la conectividad externa en el punto final. Se informa de un error de attactionate_greider después de que se ejecuta el comando de inicio. Esto se debe a que ya hay contenedores en ejecución que ocupan el puerto en el comando de inicio. Debe usar el comando docker stop containerid para hacer que funcione Container detenido
  • El tercer punto: después de usar el comando docekr run para iniciar con éxito el proyecto, aparece un error No se puede conectar a 127.0.0.1:6379 cuando se usa cartero para llamar a la interfaz en el proyecto. Esto se debe al archivo de configuración de redis. Primero, busque el archivo redis.windows.conf en el directorio de redis, comente el enlace 127.0.0.1 en el archivo y cambie el modo protegido sí a modo protegido no al mismo tiempo. time y reinicie el servicio Redis; luego cambie 127.0.0.1 en spring.redis.host = 127.0.0.1 a la ip de la intranet local en el archivo de configuración de springboot application.properties, compile la nueva imagen y luego ejecútela.
  • El cuarto punto: error de inicio ehcache.xml (no existe tal archivo o directorio). Este problema se ha visto durante mucho tiempo. Está bien ejecutar el paquete normal de mvn, pero comienza a informar de este error cuando se ejecuta en la ventana acoplable. Finalmente, se encuentra que hay un problema con la ruta del archivo del archivo de configuración de caché ehcache.xml. Necesita poner este archivo en src / main / resources, y luego leer esta ruta de archivo en la configuración de shiro, necesita usar this.getClass (). GetClassLoader (). GetResource ("ehcache.xml"). GetPath () Para obtener eso. Finalmente, comente los atributos maxEntriesLocalHeap y maxElementsOnDisk en el archivo ehcache.xml.

Lo anterior es la implementación de Docker en Windows. Pero la mayoría de los programas actuales se desarrollan en Windows y se implementan en Linux. Entonces el proceso de despliegue de la gente corriente es

Desarrollo en windows- "compilar espejo en windows-" enviar espejo en windows- "sacar espejo en linux-" ejecutar espejo en linux.

La compilación en Windows se mencionó en el artículo anterior, luego este proceso involucra otro concepto importante de Docker, a saber: almacén. El almacén es bien conocido, es el lugar para almacenar la imagen espejo, similar al almacén git para las ramas de código y al almacén maven para los paquetes dependientes. Al igual que el repositorio de git tiene muchas plataformas de alojamiento como github, codificación y nube de código, el repositorio de espejo de Docker también tiene dockerhub, el repositorio de espejo de Alibaba Cloud y el repositorio de espejo de NetEase. En los siguientes pasos, tomamos como ejemplo Alibaba Cloud Mirror Warehouse

  • El primer paso es registrarse e iniciar sesión en el sitio web oficial de Alibaba Cloud, luego buscar "Container Image Service" y hacer clic en "Management Console".
  • Paso 2: haga clic en Crear almacén espejo, complete el espacio de nombres personalizado, el nombre del almacén y el resumen. Haga clic en Siguiente para seleccionar un almacén local. Después de la creación, es como sigue.
  • Paso 3: Envíe la imagen en Windows: primero ejecute las imágenes de la ventana acoplable, puede ver la imagen compilada en el almacén local. (La dirección de push en la figura siguiente es registry.cn-shanghai.aliyuncs.com/manage-system/staging:1.0.0, donde manage-system es el espacio de nombres, staging es el nombre del almacén y 1.0.0 es el número de versión (puede ser de Definición), después de que se complete la carga, abra la versión de imagen del servicio de imágenes del contenedor para ver la imagen que acaba de cargar.
    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
    

  • Paso 4: Instale el espejo en Linux, aquí hay un blog recomendado (invasión) https://blog.csdn.net/u014069688/article/details/100532774

  • Paso 5: tira de la imagen reflejada. Inicie sesión primero e ingrese docker pull registry.cn-shanghai.aliyuncs.com/nameSpace/depository:version-num. Al igual que el anterior, nameSpace es el espacio de nombres, depositario es el nombre del almacén y version-num es el número de versión. Reemplazado aquí con el nuestro. Una vez completado el reemplazo, ingrese el comando de extracción. Si ocurre un error: Respuesta de error del demonio: acceso de extracción denegado para xxx.xxx, el repositorio no existe o puede requerir 'inicio de sesión de acoplador', preste atención aquí. Si ocurre este problema en el tirón, necesitamos Configurar un acelerador de Alibaba Cloud (paso 6), si no hay ningún problema con el tirón, omita el paso 6

  • Paso 6: configurar el acelerador de la nube de Alibaba

    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

    Después de reiniciar la configuración, inicie sesión y vuelva a extraer y la extracción se realizará correctamente, de la siguiente manera

  • Paso 7: Ejecute la duplicación, este paso ya se ha discutido en el artículo. Ingresemos el siguiente comando para ejecutarlo correctamente. Entre ellos, se ha mencionado el parámetro -p, y el parámetro -d significa que ejecutaremos el programa en segundo plano. Después de la entrada, devolverá una cadena de id de contenedor, que no afecta nuestra entrada de otros comandos.

 Hasta ahora, los tres puntos clave de almacén de docker, espejo, contenedor, así como los pozos encontrados durante la instalación y uso, y el proceso de implementación, se han escrito casi. Pero otro punto técnico estrechamente relacionado con Docker , kubernetes (implementación del clúster k8s ) , tendrá la energía para actualizarlo más tarde.

Si hay algún error en el texto, corríjame ...

Supongo que te gusta

Origin blog.csdn.net/nienianzhi1744/article/details/107953467
Recomendado
Clasificación