本文的目的是介绍如何将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 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 映像)
当您查看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 打成镜像
创建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-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镜像(已过时)
可以参考博客: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能实现应用打包隔离,实现快速部署和迁移。如果我们开发应用使用了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服务器的相关信息,可以在本站进行搜索。
本文标签: