1. Los puntos del dolor se resuelven
1. No es necesario construir un entorno de desarrollo de back-end.
2. Los cambios en el entorno de desarrollo solo requieren cambiar el espejo a actualizaciones sincrónicas.
3. No hay necesidad de herramientas IDE como Eclipse.
4. Proyectos de desarrollo de cambio
2. Soluciones
Use Docker para iniciar imágenes de Ubuntu, construir el entorno de desarrollo requerido por el proyecto en el contenedor, monte el código local en el contenedor, use el volumen de montaje para compilar y ejecutar el código utilizando el entorno en el contenedor, y el host accede a los servicios en el contenedor a través del puerto expuesto por Docker, para que la máquina de desarrollo frontal solo necesite implementar Docker y hacerlo.
3. Acerca de Docker
Entender Docker
Este artículo no tiene la intención de explicar el conocimiento de Docker en detalle. Hay muchos artículos relacionados. Si está interesado, puede leer este libro. Estoy limitado al desarrollo de esta herramienta para el uso de Docker. Si hay algo incorrecto, por favor señale.
acelerador
acelerador de daocloud
4. Construye un entorno
Después de descargar e instalar Docker, podemos comenzar. De lo que estamos hablando a continuación es Java, pero lo mismo se aplica a otros entornos.
Obtén la imagen de Ubuntu.
Docker Pull Ubuntu
Después de completarlo, ejecute docker images y verá una imagen recientemente actualizada.
Ingrese el contenedor
Docker Run -it Ubuntu
5. Instale el software y configure las variables de entorno
Primera actualización apt-get
Actualización de apt-get
A continuación, puede usar apt-get install * para instalar el software que necesita. Si no, descargue el paquete de instalación e instálelo usted mismo. Al mismo tiempo, configure las variables de entorno. No entraré en detalles aquí.
VI. Iniciar el servicio
Ingrese el directorio Tomcat, inicie el servicio y abra 0.0.0.0:8080 en el navegador. Si nada está mal, verá que no se puede acceder al servidor. Esto se debe a que el servicio que acabamos de comenzar está en Docker. Si no hacemos algunas operaciones, no podremos acceder al servicio dentro de Docker.
Entonces, salgamos primero del contenedor
salida
Después de salir, ejecute docker ps -a y puede ver que el contenedor que tenemos ahora todavía está allí. La mayoría de las personas que son nuevas en Docker cometerán este error y pensarán que el contenedor será destruido después de salir del contenedor, pero de hecho no es el caso.
Si queremos volver a ingresar este contenedor, podemos ejecutar el siguiente comando, copie su propia ID de contenedor.
Docker Exec -it Bash de identificación del contenedor
Aunque el contenedor todavía está funcionando, no está persistido. Para evitar que suceda, persistirá lo antes posible después de modificar el contenido en el contenedor.
Docker Conjunto Container ID Java
Este comando significa persistir nuestro contenedor en una nueva imagen, llamada Java.
Comience esta imagen recién creada.
Docker Run -it -P 8080: 8080 Java
Preste atención al cambio en nuestro comando de inicio, y hay un comando -p adicional. Este comando significa exponer el puerto 8080 en el contenedor al host.
Visite 0.0.0.0:8080 nuevamente y podemos ver al pequeño gato, es muy lindo.
¿Qué debo hacer si el contenedor todavía estaba ocupando nuestra memoria en este momento? Mátalo.
ID de contenedor Docker RM
Nuestro primer paso se ha completado, y luego integraremos nuestro código.
7. Código integrado
El contenedor que acabamos de comenzar es una caja negra completamente independiente, que no tiene idea de dónde está nuestro código, por lo que debemos usar el volumen de montaje de Docker para que el host y el contenedor puedan compartir el directorio.
Lo siento, vamos a matar el contenedor que acabamos de comenzar de nuevo.
Docker Run -IT -V/Users/Name/Web:/Opt/Root -P 8080: 8080 Java
Nuestro comando de inicio ha agregado un nuevo miembro -V. El significado de este comando es colgar el directorio web en el directorio raíz del usuario en el contenedor en el directorio /opt /root.
Después de ingresar al directorio, podemos encontrar que los archivos en el directorio web yacen en silencio adentro, como Mary Sue, que ha estado durmiendo durante muchos años, está esperando su llamada.
Empezar a llamar.
MVN Clean Install -u -Plocal -DskipTests
Después de un período de tiempo, veremos un aviso para un embalaje exitoso. Copie el paquete de guerra al directorio de Tomcat WebApps y puede acceder a su proyecto.
En este punto, nuestro proyecto finalmente comenzó a funcionar, pero hay varios problemas.
1. ¿Tienes que ejecutar un comando tan largo cada vez? Muy problemático.
2. Cada vez que cambia el código, debe volver a empaquetarse, lo que lleva mucho tiempo.
3. ¿Cómo leer el registro de inicio? ¿Qué debo hacer si reporto un error?
4. ¿Cómo modificar el archivo de plantilla frontal sin reiniciar el servicio?
Según estos problemas, necesitamos escribir un script para resolverlos.
8. Script de shell
El script proporcionará las siguientes instrucciones
-Y actualizar el paquete maven-compile-compile-paquete-liberación de liberación Tomcat
-P compilar paquetes de lanzamiento de liberación Tomcat
-r reiniciar Tomcat
-C Recompile Java File - Release - Start Tomcat
-W escucha archivos VM, sincronización 5S predeterminada una vez
-L View Tomcat Log
-H ayuda
# Variables que necesitan ser cambió######################################################## ##########################################################. #########################################################. ##########################################################. #########################################################. ##########################################################. #########################################################. ##########################################################. Dirección de inicio del proyecto Tom_Root = "$ {Tom_url}/WebApps"# Intervalo de escucha de archivo, unidad wt = 5# copy vmwc_vm = "src/main/webapp/web-inf/tpl/usr/share/tomcat7/webapps/web-inf/"# copy classwc_Java = "Target/classes/classes /usr/share/tomcat7/webapps/root/web -inf/" # método general # # use nuevo paquete function function newWar () { # delete paquete antiguo rm -rf $ {tom_root}/* # mueve el paquete de guerra MV $ {war_url} $ {Tom_root} /root.war} # reiniciar Tomcatfunction en reinBart () { # Close # Inicie el servicio $ {tom_url} /bin/startup.sh # Ingrese el registro de inicio Tail -f $ {Tom_url} /Logs/Catalina.out} # Procesamiento de la Directiva Mientras getopts ": yPrcwlH" optNamedO reinicio de Newwar ;; "P") echo "reempaquete" MVN Clean Package -p $ {dev} -dskiptests reiniciar ;; "r") echo "reiniciar Tomcat" reiniciar ;; "C") echo "Recompile y reinicie el servicio" MVN Clean Compile -p $ {dev} -dskipTests cp -r $ {wc_java} reinsart ;; "W") echo "Comience a escuchar los archivos VM" # Escuchar a vm watch -n $ {wt} cp -r $ {wc_vm} ;; "L") echo "Login" # Escuche a VM Tail -f $ {Tom_url} /Logs/Catalina.out ;; "h") echo " -y Update maven package-compile-package-release-start one-stop service" echo " -p Compile and package release starts one-stop service" echo " -r Restart tomcat" echo " -c Re-java file and deploy restart service" echo " -w listen to vm file, default 5S synchronization once" echo " -l View logs" echo " -h Help" ;; ESAC 9. Promoción al equipo
Después de los tres pasos anteriores, nuestras herramientas se han construido, pero ¿cómo pueden otros usarlas?
Docker proporciona servicios en la nube. Si nuestra imagen es lo suficientemente pequeña, podemos llevar la imagen a la nube para que otros la descarguen y ejecuten, pero nuestra imagen ha excedido 1G. . . Entonces no podemos usar este método.
Docker save java -o ./java.tar
Use el comando anterior para persistir la imagen al archivo local java.tar, y luego transferirla a las máquinas de otros compañeros de clase a través de otros medios. Usamos Airdrop, unos minutos de cosas.
Docker Load -i java.tar
Otros estudiantes pueden usar este comando para cargar nuestra imagen en su Docker.
Luego, integre el script de shell en el directorio raíz del proyecto y puede usarlo felizmente.
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo sea de ayuda para su estudio o trabajo. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse.