GVKun编程网logo

如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?(docker 映像)

19

本文的目的是介绍如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?的详细情况,特别关注docker映像的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您

本文的目的是介绍如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?的详细情况,特别关注docker 映像的相关信息。我们将通过专业的研究、有关数据的分析等多种方式,为您呈现一个全面的了解如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?的机会,同时也不会遗漏关于Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像、docker(六) 使用docker-maven-plugin插件构建docker镜像、docker(六) 使用docker-maven-plugin插件构建docker镜像(已过时)、Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器的知识。

本文目录一览:

如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?(docker 映像)

如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?(docker 映像)

当您查看Maven构建的Dockerfile时,其中包含以下行:

VOLUME /root/.m2

现在,如果这是我的.m2存储库在我的Mac上的位置,那将是很棒的-但事实并非如此-它在

/Users/myname/.m2

现在我可以做:

但是后来Docker中的Linux实现不知道在那儿看。我想将linux位置映射到mac位置,并将其作为我的一部分vagrant init。就像:

ln /root/.m2 /Users/myname/.m2

我的问题是: 如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?

答案1

小编典典

如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?

您宁愿将主机文件夹(例如/Users/myname/.m2)指向 容器 文件夹(而不是映像)

请参阅“
将主机目录挂载为数据卷 ”:

除了使用该-v标志创建卷之外,还可以 将Docker守护程序主机的目录挂载到容器中

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

此命令将主机目录挂载/Users/myname/.m2到位于的容器中/root/.m2
如果该路径/root/.m2已经存在于容器的映像内,则/Users/myname/.m2安装会覆盖但不会删除先前存在的内容。
除去挂载后,即可再次访问内容。
这与mount命令的预期行为一致。

Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像

Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像

创建Dockerfile文件

 

此处的参数说明:

FROM openjdk:8-jdk-alpine  基与jdk1.8
VOLUME /tmp   挂载容器的位置, 容易找到
ADD kitty-generator-1.0.0.jar app.jar   宿主机器的jar文件 移动到 容器的jar文件
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]  容器执行的命令

EXPOSE 9000 简易爆漏的端口 下面docker run -p 还是要的, 因为容器是桥接模式
EXPOSE 9092 写多个就会暴露多个端口

若要执行调优内存:加参数如下

 

 

2:POM.xml配置 加入docker:build插件

 <artifactId>kitty-generator</artifactId>  此处和下面${project.artifactId} 对应
<version>${project.version}</version>
<packaging>jar</packaging> 此处改为jar包方式
<properties>
*****
<docker.image.prefix>kitty</docker.image.prefix> 此处和下面${docker.image.prefix} 对应
</properties>

#下面为jar方式.
    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!-- Docker maven plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> </plugins>

 

在父模块打包

mvn clean install package -Dmaven.test.skip

 

在子模块执行生成镜像

mvn docker:build -Dmaven.test.skip

 

启动镜像

docker run -itd -p 9000:9000 -v /data/generator/:/data kitty/kitty-generator

 -it  可以交互进入容器

-d   后台运行

-p 端口映射,若项目有多个端口,  -p 9000:9000 -p 9092:9092 写多个即可

-v 挂载文件 宿主/data/generator/ 不存在会自动创建   容器/data会自动创建

 

挂载文件配置 

   * 注意下方/data/ 红色字体

-v /data/generator/:/data  这的/data 表示容器的日志 将会在宿主机器生成/data/generator/kitty-generator.log文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- ch.qos.logback.core.ConsoleAppender 控制台输出 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- ch.qos.logback.core.rolling.RollingFileAppender 文件日志输出 -->
    <appender name="baselog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>/data/kitty-generator.log</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>log/base.%d.%i.log</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy  class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <encoder>
            <pattern>
                [%-5level] %d{HH:mm:ss.SSS} [%thread] %logger{36} - %msg%n
            </pattern>
            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
        </encoder>
    </appender>
    <!-- 日志级别 -->
    <root>
        <!-- 定义了ERROR和INFO级别的日志;分别在FILE文件和控制台输出 -->
        <level value="INFO" />
        <appender-ref ref="baselog" />
        <appender-ref ref="console" />
    </root>
    <logger name="com.louis.kitty.generator" level="INFO">
        <appender-ref ref="baselog" />
    </logger>
</configuration>

 

docker(六) 使用docker-maven-plugin插件构建docker镜像

docker(六) 使用docker-maven-plugin插件构建docker镜像

目录

  • 一、 使用docker-maven-plugin构建镜像
  • 二、使用
  • 三、绑定Docker 命令到 Maven 各个阶段

可以参考博客:https://blog.csdn.net/aixiaoyang168/article/details/77453974
docker-maven-plugin官网推荐在新项目中使用dockerfile-maven来构建镜像。

docker-maven-plugin的Github地址:https://github.com/spotify/docker-maven-plugin

dockerfile-maven的Github地址:https://github.com/spotify/dockerfile-maven

一、 使用docker-maven-plugin构建镜像

docker-maven-plugin有两种使用方式,一种是使用Dockerfile文件,一种是不使用Dockerfile文件。

1.在 POM中指定构建信息(不使用Dockerfile文件)

在pom.xml中引入该插件

<!-- docker-maven-plugin插件(不带Dockerfile文件) -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <!--用于指定镜像名称-->
        <imageName>${project.name}:${project.version}</imageName>
        <!--用于指定基础镜像,相当于Dockerfile中的FROM指令-->
        <baseImage>java</baseImage>
        <!--相当于Dockerfile的ENTRYPOINT指令-->
        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
        <!--是否跳过docker build-->
        <skipDockerBuild>true</skipDockerBuild>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                <directory>${project.build.directory}</directory>
                <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

默认情况下,该插件通过访问localhost:2375来连接本地docker,可以通过设置DOCKER_HOST 环境变量来连接docker.

DOCKER_HOST=tcp://<host>:2375

 

2.使用Dockerfile文件

 

如果使用Dockerfile文件,必须指定dockerDirectory元素,那么 baseImage, maintainer, cmd and entryPoint这些元素也会被忽略。dockerDirectory元素所指定的内容将被复制到${project.build.directory}/docker下,resources元素则会复制除此之外的其它文件,例如项目jar文件。

<!--docker-maven-plugin插件(带Dockerfile文件)-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>${project.name}:${project.version}</imageName>
        <!--Dockerfile文件位置-->
        <dockerDirectory>docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

二、使用

创建镜像

mvn clean package docker:build

推送镜像到Registry

mvn clean package docker:build -DpushImage

推送指定tag的镜像到Registry

mvn clean package docker:build -DpushImageTag
回到顶部

三、绑定Docker 命令到 Maven 各个阶段

 

docker(六) 使用docker-maven-plugin插件构建docker镜像(已过时)

docker(六) 使用docker-maven-plugin插件构建docker镜像(已过时)

可以参考博客:https://blog.csdn.net/aixiaoyang168/article/details/77453974

docker-maven-plugin官网推荐在新项目中使用dockerfile-maven来构建镜像。

docker-maven-plugin的Github地址:https://github.com/spotify/docker-maven-plugin

dockerfile-maven的Github地址:https://github.com/spotify/dockerfile-maven

 

一、 使用docker-maven-plugin构建镜像

docker-maven-plugin有两种使用方式,一种是使用Dockerfile文件,一种是不使用Dockerfile文件。

1.在 POM中指定构建信息(不使用Dockerfile文件)

在pom.xml中引入该插件

<!-- docker-maven-plugin插件(不带Dockerfile文件) -->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <!--用于指定镜像名称-->
        <imageName>${project.name}:${project.version}</imageName>
        <!--用于指定基础镜像,相当于Dockerfile中的FROM指令-->
        <baseImage>java</baseImage>
        <!--相当于Dockerfile的ENTRYPOINT指令-->
        <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
        <!--是否跳过docker build-->
        <skipDockerBuild>true</skipDockerBuild>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!--用于指定需要复制的根目录,${project.build.directory}表示target目录-->
                <directory>${project.build.directory}</directory>
                <!--用于指定需要复制的文件。${project.build.finalName}.jar指的是打包后的jar包文件。-->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

默认情况下,该插件通过访问localhost:2375来连接本地docker,可以通过设置DOCKER_HOST 环境变量来连接docker.

DOCKER_HOST=tcp://<host>:2375

2.使用Dockerfile文件

如果使用Dockerfile文件,必须指定dockerDirectory元素,那么 baseImage, maintainer, cmd and entryPoint这些元素也会被忽略。dockerDirectory元素所指定的内容将被复制到${project.build.directory}/docker下,resources元素则会复制除此之外的其它文件,例如项目jar文件。

<!--docker-maven-plugin插件(带Dockerfile文件)-->
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>0.4.13</version>
    <configuration>
        <imageName>${project.name}:${project.version}</imageName>
        <!--Dockerfile文件位置-->
        <dockerDirectory>docker</dockerDirectory>
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

 

二、使用

创建镜像

mvn clean package docker:build

推送镜像到Registry

mvn clean package docker:build -DpushImage

推送指定tag的镜像到Registry

mvn clean package docker:build -DpushImageTag

三、绑定Docker 命令到 Maven 各个阶段

 

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

我们知道,docker能实现应用打包隔离,实现快速部署和迁移。如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构建镜像并发布到远程docker服务器会非常方便。相关步骤参考如下:

step1、开启docker服务器的tcp管理端口,这里以2375为例进行说明。具体的配置过程请参考另一篇博客:
https://www.cnblogs.com/funnyboy0128/p/9983779.html

step2、在本地配置环境变量:DOCKER_HOST,如下: 

 

step3、在应用中src/main下新建docker文件夹,并编写Dockerfile和runboot.sh文件

Dockerfile主要用来构建镜像,参考示例如下:

 1 FROM java:8
 2 MAINTAINER funnyboy
 3 VOLUME /tmp
 4 RUN mkdir /app
 5 ADD docker-app-0.0.1-SNAPSHOT.jar /app/app.jar
 6 ADD runboot.sh /app/
 7 RUN bash -c ''touch /app/app.jar''
 8 WORKDIR /app
 9 RUN chmod a+x runboot.sh
10 EXPOSE 5678
11 
12 CMD /app/runboot.sh

 

runboot.sh为应用启动脚本,参考如下:

1 java -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar

 

step4、在pom中添加docker-maven-plugin插件配置,关键代码如下:

 1 <build> 
 2     <plugins>
 3            <plugin>
 4                <groupId>org.springframework.boot</groupId>
 5                <artifactId>spring-boot-maven-plugin</artifactId>
 6            </plugin>
 7            <plugin>
 8                <groupId>com.spotify</groupId>
 9                <artifactId>docker-maven-plugin</artifactId>
10                <version>0.4.3</version>
11                <configuration>
12                    <!-- 镜像名称 -->
13                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
14                    <!-- 指定Dockerfile 文件的位置 -->
15                    <dockerDirectory>src/main/docker</dockerDirectory>
16                    <!-- 指定哪些文件需要和 Dockerfile放在一起,一般jar包需要  -->
17                    <resources>
18                        <resource>
19                            <targetPath>/</targetPath>
20                            <directory>${project.build.directory}</directory>
21                            <include>${project.build.finalName}.jar</include>
22                        </resource>
23                    </resources>
24                </configuration>
25            </plugin>
26        </plugins>
27 </build>
28 <properties>
29 <docker.image.prefix>funnyboy</docker.image.prefix>
30 <project.artifactId>docker-app</project.artifactId>
31 <project.build.finalName>app</project.build.finalName>
32 </properties>

 

step5、本地执行构建:mvn clean package docker:build

 

step6、远程登陆服务器,查看docker镜像:docker images

 

经过上述步骤,就已经成功实现了构建spring cloud+spring boot应用,并将镜像发布到远程docker服务器。

 

我们今天的关于如何将docker映像指向.m2目录,以便在Mac上的docker中运行maven?docker 映像的分享就到这里,谢谢您的阅读,如果想了解更多关于Docker Spring boot 项目使用 docker-maven-plugin 执行mvn docker:build 打成镜像、docker(六) 使用docker-maven-plugin插件构建docker镜像、docker(六) 使用docker-maven-plugin插件构建docker镜像(已过时)、Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器的相关信息,可以在本站进行搜索。

本文标签: