Utilice Docker para implementar el proyecto del paquete de guerra en centos (artículo jsp)
Prefacio:
Para abreviar la historia, este es mi primer artículo por capricho. Registro los pensamientos después de resolver los problemas reales que encontré. Si el resumen está incompleto, ¡espero que puedan darme algún consejo!
1. Preparación ambiental
Lo que he preparado aquí es el entorno de espejo virtual centos7 (VMware), la herramienta de conexión shell5 (utilizada para transferir archivos) y Navicat15 (herramienta de visualización de bases de datos).
Enlace: https://pan.baidu.com/s/1s6yRXsWtbvxsg164Código
de extracción cir-bg: 6666
No escribiré nada más aquí, una vez hechos los preparativos, expliquemos un poco sobre Docker.
2. Ventajas de Docker
1. Simplificar los trámites
Docker permite a los desarrolladores empaquetar sus aplicaciones y dependencias en un contenedor portátil y luego publicarlas en cualquier máquina Linux popular para lograr la virtualización. Docker ha cambiado la forma de virtualización, permitiendo a los desarrolladores colocar directamente sus resultados en Docker para su administración. La comodidad y la velocidad ya son las mayores ventajas de Docker. Las tareas que antes tomaban días o incluso semanas se pueden completar en solo segundos gracias al procesamiento de contenedores Docker.
2. Evite la fobia a elegir
Si tiene fobia a elegir, sea un paciente veterano. ¡Docker te ayuda a empaquetar tus problemas! Por ejemplo, las imágenes de Docker; las imágenes de Docker contienen el entorno de ejecución y la configuración, por lo que Docker puede simplificar la implementación de múltiples instancias de aplicaciones. Por ejemplo, aplicaciones web, aplicaciones en segundo plano, aplicaciones de bases de datos, aplicaciones de big data como clústeres de Hadoop, colas de mensajes, etc. se pueden empaquetar en un espejo para su implementación.
3. Ahorra dinero
Por un lado, la llegada de la era de la computación en la nube libera a los desarrolladores de la necesidad de configurar hardware costoso para lograr resultados. Docker ha cambiado la mentalidad de que un alto rendimiento debe tener un precio elevado. La combinación de Docker y la nube permite aprovechar al máximo el espacio en la nube. No sólo resuelve el problema de la gestión del hardware, sino que también cambia la forma de virtualización.
3. Estructura acoplable
Demonio Docker (Demonio Docker)
Docker Daemon es un proceso en segundo plano que se ejecuta en el host (DOCKER-HOST). Se puede comunicar con él a través del cliente Docker.
1.Cliente (cliente Docker)
El cliente Docker es la interfaz de usuario de Docker, que puede aceptar comandos de usuario e identificadores de configuración y comunicarse con el demonio de Docker. En la figura, Docker Build, etc. son todos comandos relacionados con Docker.
2.Imágenes (imagen de Docker)
Una imagen de Docker es una plantilla de solo lectura que contiene instrucciones para crear un contenedor de Docker. Es algo similar al CD de instalación del sistema. Puede usar el CD de instalación del sistema para instalar el sistema. De la misma manera, puede usar la imagen de Docker para ejecutar los programas en la imagen de Docker.
3.Contenedor (contenedor)
Un contenedor es una instancia ejecutable de una imagen. La relación entre imágenes y contenedores es algo similar a la relación entre clases y objetos en la tecnología orientada a objetos. Los contenedores se pueden iniciar, detener, mover y eliminar mediante comandos Docker API o CLI.
4.Registro
Docker Registry es un servicio que almacena y distribuye imágenes de forma centralizada. Después de crear la imagen de Docker, se puede ejecutar en el host actual. Pero si desea ejecutar esta imagen en otras máquinas, deberá copiarla manualmente. En este momento, puede utilizar Docker Registry para evitar la copia manual de imágenes.
Un Docker Registry puede contener varios repositorios de Docker, cada repositorio puede contener varias etiquetas de imagen y cada etiqueta corresponde a una imagen de Docker. Esto es algo similar al almacén de Maven. Si se compara Docker Registry con el almacén de Maven, entonces el almacén de Docker puede entenderse como la ruta de un determinado paquete jar y la etiqueta de la imagen puede entenderse como el número de versión del paquete jar.
4. Comparación entre Docker y máquinas virtuales
Como método de virtualización liviano, Docker tiene ventajas significativas sobre las máquinas virtuales tradicionales en la ejecución de aplicaciones:
Los contenedores Docker son muy rápidos y se pueden iniciar y detener en segundos, lo cual es mucho más rápido que los métodos tradicionales de máquinas virtuales.
Los contenedores Docker requieren muy pocos recursos del sistema y se pueden ejecutar miles de contenedores Docker simultáneamente en un host.
Docker facilita a los usuarios obtener, distribuir y actualizar imágenes de aplicaciones a través de operaciones similares a Git. Las instrucciones son simples y el costo de aprendizaje es bajo.
Docker admite mecanismos flexibles de creación e implementación automatizados a través de archivos de configuración Dockerfile para mejorar la eficiencia del trabajo.
5. Instalación de Docker
Docker es un producto comercial de código abierto con dos versiones: Community Edition (CE) y Enterprise Edition (EE). La versión empresarial incluye algunos servicios pagos, que generalmente no están disponibles para desarrolladores individuales.
Docker requiere que la versión del kernel del sistema CentOS sea al menos 3.10. Consulte los requisitos previos en esta página para verificar si su versión de CentOS es compatible con Docker.
Vaya directamente al enlace detallado del jefe: (El punto del que quiero hablar es cómo implementar el paquete de guerra a continuación)
https://cloud.tencent.com/developer/article/1701451
6. Descargue la imagen de Tomcat
- versión de Docker //Compruebe si Docker se instaló correctamente
-
systemctl start docker //Inicia el servicio Docker
-
docker pull tomcat // La última imagen se extrae y descarga de forma predeterminada
-docker pull tomcat:8.5.38-jre8 // También puede especificar una versión específica.
Una vez completada la descarga, verifique si la imagen se descargó correctamente. -
imágenes acoplables //Ver todas las imágenes instaladas
-
ventana acoplable ejecutar -p 8080:8080 -d --name tomcat tomcat
-
-p 8080:8080 corresponde al puerto del host: puerto del contenedor
-
–nombre tomcat1 llamado tomcat1
-
El nombre del archivo de imagen utilizado por Tomcat:8.5.38-jre8
-
docker ps // Ver contenedores en ejecución.
Si está vacío, significa que no hay contenedores en ejecución. -
docker ps -a //Incluye contenedores en ejecución y no en ejecución
-
docker start tomcat1 // Comience por el nombre del contenedor o por la identificación delante del contenedor. El método consiste en reemplazar la identificación del contenedor con el nombre del contenedor tomcat1 -docker ps se
inicia
correctamente
. También puede configurar este contenedor para que se inicie automáticamente en arranque
y agregue –restart= al iniciar.siempre -
docker run -itd --name tocmat1 -p 8080:8080 --restart=always tomcat:8.5.38-jre8
-
Nota: Este método es para volver a crear un nuevo contenedor Tomcat. Si ya existe un contenedor con el mismo nombre, se informará un error. Si ya se ha creado un contenedor Tomcat, utilice el siguiente método.
-
siempre //Reinicie el contenedor solo cuando el contenedor se haya detenido o Docker se haya detenido/reiniciado
Si el proyecto ha sido iniciado
- docker update --restart=always tomcat1 // El último tomcat1 es el nombre del contenedor, que también se puede reemplazar con la identificación del contenedor. Hay
otra forma de generar un contenedor Tomcat: - docker run -itd --name tomcat2 --restart=always -p 8081:8080 -v /root/homework/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8.5.38-jre8
- -v mount file asigna la carpeta dentro del contenedor a un archivo personalizado. De lo contrario, se generará automáticamente.
- /root/homework/tomcat/webapps es la dirección del archivo de la máquina física
- :/usr/local/tomcat/webapps es la ubicación del archivo interno del contenedor tomcat2
- 8081:8080 se usa aquí porque el puerto 8080 del host lo he dado al contenedor tomcat1. No he eliminado tomcat1 aquí. El puerto está ocupado, por lo que solo puedo dárselo a otros puertos desocupados o detener el uso. del contenedor tomcat1. También es posible asignar el puerto 8080 de tomcat2 al puerto 8080 del host.
- Hay un problema aquí, es decir, cuando el archivo webapps del contenedor Tomcat está montado en el host, la ip de acceso: puerto no se mostrará, si no está montado, se mostrará, pero no afectará el despliegue del paquete de guerra.
- Contenedor Tomcat con archivos webapps montados:
Contenedor Tomcat sin archivos montados:
7. Descarga del espejo MYSQL
-
docker mysql // extrae la última imagen de forma predeterminada
-
Instalé 5.7.19 aquí. Puede cambiar el número de versión posterior según sus necesidades.
-
docker run --name mysql:5.7.19 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql_5.7.19 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
-
–nombre nombre del contenedor
-
-p 13306:3306 puerto de la máquina física: puerto interno del contenedor
-
-e el parámetro en ejecución inicializa la contraseña del usuario root
-
-d ejecuta mysql:5.7.19 en segundo plano y agrega una etiqueta al nombre de la imagen descargada
-
–character-set-server=utf8mb4: establece la codificación predeterminada del servidor MySQL en utf8mb4
-
–collation-server=utf8mb4_unicode_ci: establece la intercalación predeterminada del servidor MySQL en utf8mb4_unicode_ci
-
docker ps //Comprueba si el contenedor se inicia normalmente
-
docker update --restart=always mysql_5.7.19 //Configura el contenedor mysql-5.7.19 para que se inicie automáticamente
8. Despliegue del paquete de guerra
- Abra la herramienta de desarrollo, aquí está eclipse y empaquete el proyecto java que puede ejecutarse con éxito en una guerra (aquí hay un proyecto jsp)
- En este momento podemos ver que la ruta que acabamos de seleccionar para el almacenamiento tiene un paquete de guerra adicional.
- Utilice la herramienta gráfica de base de datos Navicat para conectarse a la base de datos.
- Exportar la base de datos relacionada con este proyecto.
- Luego puedes ir a la ruta de almacenamiento y ver un archivo sql.
- Crear una nueva conexión de base de datos mysql
- Abra y cree una base de datos, cree una nueva consulta
; vuelva a abrir la conexión de la base de datos y podrá ver que la base de datos se ha creado.
- Haga doble clic para abrir la base de datos, haga clic derecho para ejecutar el archivo SQL y busque el archivo SQL que acaba de guardar.
- Importado exitosamente
- Actualiza y abre la tabla para ver los datos.
- En este momento, verifique si los datos existen en el contenedor mysql de Docker.
- ejecutivo de ventana acoplable -it mysql_5.7.19 /bin/bash
- -i -t es equivalente a -it significa insertar, ingresar; /bin/bash significa interfaz interactiva de script de shell
- mysql -uroot -proot // La raíz detrás de -p es la contraseña de root establecida antes
- mostrar bases de datos; //Mostrar todas las bases de datos
- Seleccionar una base de datos; mostrar todas las tablas de la base de datos actual
- La transferencia de datos fue exitosa, ahora comience a cargar el paquete de guerra.
- Ingrese sz en la ventana de comando donde está conectado xshell y presione Enter para encontrar el paquete war que acaba de almacenar y transferirlo.
- Una vez completada la transferencia, ingrese ls para ver los archivos en el directorio actual.
- El contenedor que uso aquí monta el archivo webapps de tomcat2 en el archivo host, por lo que solo necesito copiar el paquete war en la carpeta montada.
- cp PersonManager.war tarea/tomcat/webapps/
- Ingrese a la carpeta montada para ver los archivos.
- Reinicie el contenedor Tomcat2
-docker restart tomcat2 // Si se ha iniciado tomcat2, use reiniciar, si no, use inicio.
- Vaya al directorio montado para ver si la guerra ha sido analizada. Ha
sido analizada. Vamos al navegador y usamos ip: puerto/nombre del proyecto para acceder **
!!!Algo especial a tener en cuenta aquí es que los sistemas Linux distinguen entre mayúsculas y minúsculas, pero los sistemas Windows no.
**
Inicié sesión aquí y descubrí que no podía iniciar sesión.
- Pero mi cuenta y contraseña son correctas. Finalmente verifiqué la información, pedí consejo a los expertos y finalmente lo resolví. ¡Todos deberían prestar atención aquí! ! !
- Busque el archivo de configuración para que su proyecto se conecte a la base de datos, use vi o vim con espacios en el nombre del archivo de configuración
- El localhost en el frente debe ser la IP del contenedor mysql, el puerto es el puerto 3306 del contenedor y el nombre de la base de datos en la parte posterior debe prestar atención a mayúsculas y minúsculas. Mi base de datos está en minúsculas, por lo que es necesario cambiarla. a minúsculas aquí.
- Docker inspecciona el nombre del contenedor MySQL // Primero verifique la IP interna del contenedor MySQL
- ventana acoplable inspecciona mysql_5.7.19
- La configuración correcta es
- docker restart tomcat2 //Reiniciar el contenedor tomcat
- ¡Vaya a visitar el proyecto
e inicie sesión correctamente! !