GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara mengarahkan gambar buruh pelabuhan ke direktori .m2 saya untuk menjalankan maven di buruh pelabuhan di mac?

Untuk membagikan folder .m2 pada langkah build, Anda dapat menimpa nilai localRepository di settings.xml.

Ini cuplikan Dockerfile yang saya gunakan untuk membagikan repositori .m2 lokal saya di 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"]

Bagaimana cara mengarahkan gambar buruh pelabuhan ke direktori .m2 saya untuk menjalankan maven di buruh pelabuhan di mac?

Anda lebih suka mengarahkan folder host (seperti /Users/myname/.m2) ke wadah folder (bukan gambar)

Lihat "Memasang direktori host sebagai volume data":

Selain membuat volume menggunakan -v tandai Anda juga dapat memasang direktori dari host daemon Docker Anda ke dalam wadah .

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

Perintah ini memasang direktori host, /Users/myname/.m2 , ke dalam wadah di /root/.m2 .
Jika jalur /root/.m2 sudah ada di dalam image container, /Users/myname/.m2 pasang overlay tetapi tidak menghapus konten yang sudah ada sebelumnya.
Setelah mount dihapus, konten dapat diakses kembali.
Ini konsisten dengan perilaku yang diharapkan dari perintah mount.


Berikut adalah Dockerfiles dan docker-compose misalnya proyek yang berisi satu layanan pegas dan layanan lainnya;

dockerfile layanan musim semi

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"

Di sini, di docker-compose, kami membuat volume untuk repo .m2 dan container lokal kami.


Linux
  1. Cara Membuat Direktori Bersama untuk Semua Pengguna di Linux

  2. Cara Menggunakan Dockerfile untuk Membangun Gambar Docker

  3. Cara melakukan perubahan pada gambar Docker

  1. Cara Memodifikasi Gambar Docker

  2. Bagaimana cara chown direktori untuk banyak pengguna?

  3. OS mana yang berjalan di wadah Docker saya?

  1. Cara membuat gambar khusus dari wadah Docker

  2. Golang Mac OSX dibuat untuk mesin Docker

  3. Bagaimana cara menentukan nama host untuk wadah yang sedang berjalan?