GNU/Linux >> Znalost Linux >  >> Linux

Jak nasměruji obrázek dockeru do mého adresáře .m2 pro spuštění maven v dockeru na Macu?

Chcete-li sdílet složku .m2 v kroku sestavení, můžete přepsat hodnotu localRepository v settings.xml.

Zde je fragment Dockerfile, který jsem použil ke sdílení svého místního úložiště .m2 v dockeru.

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"]

Jak nasměruji obrázek dockeru do mého adresáře .m2 pro spuštění maven v dockeru na Macu?

Raději nasměrujte hostitelskou složku (jako /Users/myname/.m2) na kontejner složku (nikoli obrázek)

Viz "Připojení hostitelského adresáře jako datového svazku":

Kromě vytvoření svazku pomocí -v můžete také připojit adresář z hostitele démona Docker do kontejneru .

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

Tento příkaz připojí hostitelský adresář /Users/myname/.m2 , do kontejneru na /root/.m2 .
Pokud je cesta /root/.m2 již existuje uvnitř obrázku kontejneru, /Users/myname/.m2 připojit překryvy, ale neodstraní již existující obsah.
Po odstranění držáku je obsah opět přístupný.
To je v souladu s očekávaným chováním příkazu mount.


Zde jsou například projekt Dockerfiles a docker-compose obsahující jednu jarní službu a jakékoli další služby;

Spring-service dockerfile

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"

Zde v docker-compose vytváříme objemy pro naše místní úložiště .m2 a kontejner jedna.


Linux
  1. Jak vytvořit sdílený adresář pro všechny uživatele v Linuxu

  2. Jak vytvořit bitovou kopii Windows pro OpenStack

  3. Jak vytvořit vlastní obrázek z kontejneru Docker

  1. Jak spustit příkaz na spuštěném kontejneru Docker

  2. Jak zadat název hostitele pro běžící kontejner?

  3. Který operační systém běží v mém kontejneru Docker?

  1. Jak použít Dockerfile k vytvoření Docker Image

  2. Jak upravit obrázky Docker

  3. Jak potvrdit změny v obrazu Dockeru