Utilice Docker y Docker-Compose para implementar microservicios

1. Utilice la implementación de Docker

1. Prepárate

Aquí, Redis y nacos se instalaron e iniciaron en la ventana acoplable, y se configuró el archivo "ruoyi-gateway-prod.yml".

Tenga en cuenta que si hay información de conexión como Redis, MySQL y nacos en el archivo de configuración, debe cambiar la dirección IP a la dirección de red pública o la dirección de intranet del servidor y la conexión no fallará.
inserte la descripción de la imagen aquí

2. Cargue el paquete jar

Aquí tomo el servicio de puerta de enlace de la versión de microservicio Ruoyi como ejemplo y lo subo al directorio especificado.

inserte la descripción de la imagen aquí

3. Escribe el archivo Docker

Documentación oficial:

https://docs.docker.com/engine/reference/builder/

El inglés parece un poco difícil, Ruoyi tiene un tutorial en chino aquí.

inserte la descripción de la imagen aquí

Esta es la dirección del documento de Zoe:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile

Primero obtenga la imagen básica necesaria para construir la imagen, es decir, la imagen jdk, y primero mire las imágenes jdk.

docker search openjdk

inserte la descripción de la imagen aquí
Aquí está la imagen de jdk8.

docker pull openjdk:8-jre

inserte la descripción de la imagen aquí
Lo he buscado antes, puede que sea un poco más lento la primera vez.

Luego cree un archivo llamado dockerfile, el nombre del archivo se puede personalizar, generalmente es dockerfile, el contenido es el siguiente:
inserte un fragmento de código aquí

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"

# 创建目录
RUN mkdir -p /home/jar
# 指定路径,后面运行的jar包就是在这个目录
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar

# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar

# 启动网关服务jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]

Subir al mismo directorio que el paquete jar.

inserte la descripción de la imagen aquí

Si desea copiar varios archivos al contenedor, puede hacer esto

inserte la descripción de la imagen aquí

3. Cree imágenes y contenedores.

Cree la imagen reflejada en el directorio actual. Tenga en cuenta que el siguiente "." no es redundante. El comando es el siguiente:

docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .

explicar:

-f: seguido de la ruta del dockerfile
-t: etiqueta la imagen construida, que es el nombre de la imagen construida

Aviso:

El comando para ejecutar la imagen de compilación debe estar en el directorio donde se encuentra el dockerfile, porque el comando "COPIAR" del dockerfile solo puede estar en un directorio relativo al dockerfile, y se informará un error si el directorio absoluto de el host se utiliza para construir.

Los resultados de la ejecución son los siguientes:

inserte la descripción de la imagen aquí

La compilación fue exitosa porque ya la he compilado exitosamente antes y puede ser diferente de la primera compilación.

Luego inicie el espejo, el comando es el siguiente:

docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway

explicar:

–name: seguido del nombre del contenedor, que es el mismo que el nombre de la imagen aquí
-p: seguido de la asignación de puertos entre el host y el contenedor, antes de ":" es el puerto del servidor, después de ":" es el último
puerto del contenedor seata es el nombre de la imagen

Puede ver que el contenedor se está ejecutando.

inserte la descripción de la imagen aquí

2. Utilice Docker-Compose para implementar

El uso de docker-compose para implementar servicios se basa en la implementación de Docker, agregando archivos docker-compose.yml para administrar los contenedores de servicios de manera unificada e implementando un comando para iniciar o cerrar todos los contenedores de servicios, por lo que para usar la implementación de docker-compose, usted Primero debe aprender a usar la implementación de Docker. Es un método de implementación cómodo, problemático en la etapa inicial y cómodo en la etapa posterior.

Ruoyi también tiene tutoriales relacionados:

http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose

1. Prepare el paquete jar y el dockerfile para el servicio.

Sobre la base de mantener el paquete jar y el archivo docker de la puerta de enlace en Ruoyi, agregue el paquete jar y el archivo docker de autenticación. El archivo docker de autenticación es similar al de la puerta de enlace, de la siguiente manera:

# 基础镜像
FROM  openjdk:8-jre
# author
LABEL author="gan"

# 创建目录
RUN mkdir -p /home/jar
# 指定路径
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar

# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 启动系统服务
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]

inserte la descripción de la imagen aquí

Subir a la carpeta especificada

inserte la descripción de la imagen aquí

inserte la descripción de la imagen aquí

2. Escriba el archivo docker-compose.yml

La versión de Docker correspondiente al archivo docker-compose.yml en el sitio web oficial.
inserte la descripción de la imagen aquí

Aquí está mi versión acoplable:

inserte la descripción de la imagen aquí

Entonces, la versión del archivo de mi docker-compose.yml es 3.8.

En el archivo solo hay contenidos relacionados con la puerta de enlace y la autenticación, de la siguiente manera:

# 描述 Compose 文件的版本信息
version : '3.8'

# 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
services:
  ruoyi-gateway:  # 服务名称,跟构建镜像名称有关,假如image值为空,那么生成的镜像名称为“docker-compose.yml文件所在目录名称_ruoyi-gateway”,我放在jar目录,生成的镜像名称就是jar_ruoyi-gateway
    image: ruoyi-gateway  # 构建镜像名称
    container_name: ruoyi-gateway   # 容器名称
    build:
      context: ./gateway    # 构建镜像的jar包和dockerfile文件所在的目录(相对于docker-compose.yml文件,我这里gateway目录是跟docker-compose.yml文件同一目录)
      dockerfile: dockerfile  # 构建网关镜像的文件名称
    ports:
      - "8010:8010"   # 构建容器端口号,“:”前为宿主机端口,“:”后为容器端口
  ruoyi-auth:
    image: ruoyi-auth
    container_name: ruoyi-auth
    build:
      context: ./auth
      dockerfile: dockerfile
    ports:
      - "9200:9200"

Una vez escrito el archivo, cárguelo en el directorio especificado.

inserte la descripción de la imagen aquí

3. Comandos comunes para docker-compose

(1) Cree un espejo en primer plano e inicie el contenedor.

De manera similar a usar el comando java -jar para iniciar el paquete jar, preste atención para ejecutarlo en el directorio donde se encuentra el archivo docker-compose.yml, el comando es el siguiente:

docker-compose up

inserte la descripción de la imagen aquí
Una vez que se cierra la ventana, el servicio se detendrá. Se puede utilizar al iniciar el servicio por primera vez. El nombre del servicio está en el extremo izquierdo. Si cada servicio no ve el error de registro, significa que el inicio se realizó correctamente. .

inserte la descripción de la imagen aquí
Ctrl+C para salir, pero incluso si está cerrado, la imagen y el contenedor creados aún existen

inserte la descripción de la imagen aquí

(2) Cree un espejo en segundo plano e inicie el contenedor.

También se debe ejecutar en el directorio donde se encuentra el archivo docker-compose.yml, el comando es el siguiente:

docker-compose up -d

inserte la descripción de la imagen aquí

También puede especificar la ruta del archivo docker-compose.yml, el comando es el siguiente:

docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d

inserte la descripción de la imagen aquí

La ejecución no imprimirá el registro de cada inicio del servicio, necesita ver el registro, puede usar el siguiente comando para verlo

docker-compose logs

inserte la descripción de la imagen aquí
Si solo desea ver el registro del servicio ruoyi-auth, puede usar el siguiente comando

docker-compose registros ruoyi-auth

inserte la descripción de la imagen aquí

(3), ver el contenedor iniciado

Puede ver todos los contenedores iniciados por el archivo docker-compose.yml, el comando es el siguiente:

docker-compose ps

inserte la descripción de la imagen aquí

También puede especificar el nombre del servicio, por ejemplo, ejecutar para ver si se inicia ruoyi-auth, el comando es el siguiente:

docker-compose ps ruoyi-auth

inserte la descripción de la imagen aquí

Tenga en cuenta que solo se puede ejecutar en el directorio donde se encuentra el archivo docker-compose.yml y se informará un error cuando se ejecute en otros directorios.

inserte la descripción de la imagen aquí

4. Detener el servicio (incluida la eliminación)

Para detener y eliminar todos los contenedores de servicios sin eliminar la imagen, el comando es el siguiente:

docker-compose down

Puede ver que la imagen todavía está allí, pero el contenedor correspondiente ha sido eliminado.

inserte la descripción de la imagen aquí
Para ver la imagen correspondiente al contenedor de servicios, el comando es el siguiente:

docker-compose images

inserte la descripción de la imagen aquí

Detenga y elimine los contenedores, redes y espejos de todos los servicios del proyecto, el comando es el siguiente:

docker-compose down --rmi all

inserte la descripción de la imagen aquí
Este método se puede utilizar para detener si se vuelve a cargar el paquete jar.

5. Inicie el contenedor de servicios.

Inicie los contenedores de todos los servicios del proyecto, el comando es el siguiente:

docker-compose start

inserte la descripción de la imagen aquí
También puede agregar el nombre del contenedor al comando anterior para iniciar el contenedor especificado. Por ejemplo, solo inicio el contenedor de puerta de enlace. El comando es el siguiente:

docker-compose start ruoyi-gateway

inserte la descripción de la imagen aquí

6. Cierre el contenedor de servicios.

Cierre todos los contenedores de servicios del proyecto, el comando es el siguiente:

docker-compose stop

inserte la descripción de la imagen aquí
También puede agregar el nombre del contenedor al comando anterior para cerrar el contenedor especificado. Por ejemplo, solo cierro el contenedor de autenticación. El comando es el siguiente:

docker-compose stop ruoyi-auth

inserte la descripción de la imagen aquí

7. Reinicie el contenedor de servicios.

Reinicie todos los contenedores de servicios en el proyecto, el comando es el siguiente:

docker-compose restart

inserte la descripción de la imagen aquí

También puede agregar el nombre del contenedor al comando anterior para reiniciar el contenedor especificado. Por ejemplo, solo reinicio el contenedor de autenticación. El comando es el siguiente:

docker-compose restart ruoyi-auth

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/studio_1/article/details/132235696
Recomendado
Clasificación