Cuando Docker encontró Intellij IDEA, volvió a liberar productividad ~

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 ❤️

Supongo que te gusta

Origin blog.csdn.net/hollis_chuang/article/details/108687967
Recomendado
Clasificación