GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo apunto una imagen de la ventana acoplable a mi directorio .m2 para ejecutar maven en la ventana acoplable en una Mac?

Para compartir la carpeta .m2 en el paso de compilación, puede sobrescribir el valor de localRepository en settings.xml.

Aquí está el fragmento de Dockerfile que usé para compartir mi repositorio local .m2 en Docker.

FROM maven:3.5-jdk-8 as BUILD

RUN echo \
    "<settings xmlns='http://maven.apache.org/SETTINGS/1.0.0\' \
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' \
    xsi:schemaLocation='http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd'> \
        <localRepository>/root/Users/myname/.m2/repository</localRepository> \
        <interactiveMode>true</interactiveMode> \
        <usePluginRegistry>false</usePluginRegistry> \
        <offline>false</offline> \
    </settings>" \
    > /usr/share/maven/conf/settings.xml;

COPY . /usr/src/app
RUN mvn --batch-mode -f /usr/src/app/pom.xml clean package

FROM openjdk:8-jre
EXPOSE 8080 5005
COPY --from=BUILD /usr/src/app/target /opt/target
WORKDIR /opt/target
ENV _JAVA_OPTIONS '-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
ENV swarm.http.port 8080

CMD ["java", "-jar", "app-swarm.jar"]

¿Cómo apunto una imagen de ventana acoplable a mi directorio .m2 para ejecutar maven en ventana acoplable en una Mac?

Prefiere apuntar una carpeta de host (como /Users/myname/.m2) a un contenedor carpeta (no una imagen)

Consulte "Montar un directorio de host como un volumen de datos":

Además de crear un volumen usando el -v flag también puede montar un directorio desde el host de su demonio Docker en un contenedor .

$ docker run -d -P --name web -v /Users/myname/.m2:/root/.m2 training/webapp python app.py

Este comando monta el directorio host, /Users/myname/.m2 , en el contenedor en /root/.m2 .
Si la ruta /root/.m2 ya existe dentro de la imagen del contenedor, el /Users/myname/.m2 monta superposiciones pero no elimina el contenido preexistente.
Una vez que se quita la montura, se puede volver a acceder al contenido.
Esto es consistente con el comportamiento esperado del comando de montaje.


Aquí están los archivos Dockerfiles y docker-compose, por ejemplo, un proyecto que contiene un servicio Spring y cualquier otro servicio;

Dockerfile de servicio de primavera

FROM maven:3.5-jdk-8-alpine 

WORKDIR /app

COPY . src

CMD cd src ; mvn spring-boot:run

docker-compose.yml

version: '3'

services:

  account-service:
    build:
      context: ./
      dockerfile: Dockerfile
    ports:
      - "8080:8080"
    volumes:
      - "${HOME}/.m2:/root/.m2"

Aquí, en docker-compose, creamos volúmenes para nuestro repositorio local .m2 y el contenedor uno.


Linux
  1. Cómo crear un directorio compartido para todos los usuarios en Linux

  2. Cómo crear una imagen de Windows para OpenStack

  3. Cómo usar un Dockerfile para crear una imagen de Docker

  4. Cómo ejecutar un comando en un contenedor Docker en ejecución

  5. Cómo confirmar cambios en una imagen de Docker

Cómo realizar implementaciones Canary con Istio

Cómo reemplazar Docker con Podman en una Mac

Cómo instalar la imagen de AlmaLinux 8 en Docker Container

Cómo crear una imagen de Docker desde un contenedor en ejecución

Cómo usar Docker Guardar imagen y exportar para compartir

Cómo instalar Docker en Mac