Traslado desde: Tao Zhanghao
Enlace: https://juejin.im/post/5d026212f265da1b8608828b
Idea es una herramienta de desarrollo de Java, SpringBoot es el marco de microservicio más popular en el ecosistema de Java, y Docker es la tecnología de contenedores más popular en la actualidad, entonces, ¿qué reacción química producirán cuando se combinen?
1. Preparación antes del desarrollo
1. La instalación de Docker puede hacer referencia a https://docs.docker.com/install/
2. Configurar el puerto de conexión remota de Docker
vi /usr/lib/systemd/system/docker.service
Busque ExecStart, agregue -H tcp: //0.0.0.0: 2375 al final, como se muestra en la siguiente figura
3. Reinicie la ventana acoplable
systemctl daemon-reload
systemctl start docker
4. Puertos abiertos
firewall-cmd --zone=public --add-port=2375/tcp --permanent
5. Idea instalar el complemento y reiniciar
6. Conéctese a la ventana acoplable remota
(1) Editar configuración
(2) Complete la dirección de la ventana acoplable remota
(3) Si la conexión es exitosa, el contenedor y el espejo de la ventana acoplable remota aparecerán en la lista
2. Nuevo proyecto
1. Crea un proyecto springboot
Diagrama de estructura del proyecto
(1) Configurar el archivo pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>docker-demo</groupId>
<artifactId>com.demo</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.2.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<docker.image.prefix>com.demo</docker.image.prefix>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<configuration>
<tasks>
<copy todir="src/main/docker" file="target/${project.artifactId}-${project.version}.${project.packaging}"></copy>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>
</project>
(2) Cree un directorio docker en el directorio src / main y cree un archivo Dockerfile
FROM openjdk:8-jdk-alpine
ADD *.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
(3) Cree un archivo application.properties en el directorio de recursos
logging.config=classpath:logback.xml
logging.path=/home/developer/app/logs/
server.port=8990
(4) Crear archivo DockerApplication
@SpringBootApplication
public class DockerApplication {
public static void main(String[] args) {
SpringApplication.run(DockerApplication.class, args);
}
}
(5) Crear archivo DockerController
@RestController
public class DockerController {
static Log log = LogFactory.getLog(DockerController.class);
@RequestMapping("/")
public String index() {
log.info("Hello Docker!");
return "Hello Docker!";
}
}
(6) Agregar configuración
Explicación del comando
Etiqueta de imagen: especifique el nombre y la etiqueta de la imagen, el nombre de la imagen es docker-demo y la etiqueta es 1.1.
Vincular puertos: vincula el puerto del host al puerto interno del contenedor. El formato es [puerto de host]: [puerto interno del contenedor]
Enlazar montajes: monta el directorio de host en el directorio interno del contenedor. El formato es [Directorio de host]: [Directorio interno del contenedor]. Este proyecto de springboot imprimirá el registro en el contenedor
En el directorio / home / developer / app / logs /, después de montar el directorio de host en el directorio interno del contenedor, los registros se conservarán en el directorio de host fuera del contenedor.
(7) Embalaje Maven
(8) Operación
Primero, extraiga la imagen base, luego empaquete la imagen e implemente la imagen en la ventana acoplable remota para ejecutar
Aquí podemos ver que el nombre de la imagen es docker-demo: 1.1 y el contenedor docker es docker-server
(9) Operación exitosa
(10) Acceso al navegador
(11) Vista de registro
Desde entonces, el proyecto springboot se ha implementado con éxito en Docker a través de idea. ¡Es difícil imaginar que implementar un proyecto Javaweb sea tan fácil y conveniente!
No hay manera, pero la técnica se puede lograr; si no hay manera, termina con la técnica.
Bienvenidos a todos a seguir la cuenta pública de Java Way
Buen artículo, estoy leyendo ❤️