赞
踩
idea提供了docker plugin可以用例构建镜像和远程拉起容器
#修改该Docker服务文件
vi /lib/systemd/system/docker.service
#修改ExecStart这行,将原来注释,加上这个命令
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
#重新加载配置文件
systemctl daemon-reload
#重启服务
systemctl restart docker.service
#查看端口是否开启
netstat -nlpt #如果找不到netstat命令,可进行安装。yum install net-tools
#直接curl看是否生效
curl http://127.0.0.1:2375/info
可以提供非常方便的部署功能
docker build -t hello-java . && docker run -p 88:8080 -v /logs:/logs --name hello-666 hello-java
市面上docker-maven-plugin太多,我们推荐一个 docker-maven-plugin,照着文档使用就行。不管使用哪一种docker插件来构造image,都比不上直接用Dockerfile编写简单,而且可复用,不用学习不同插件不同的构造规则。
最好给自己的Docker服务器配置阿里云镜像加速,否则经常导致镜像下载不来的情况
fabric8io的有两大功能:
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.33.0</version> <!--全局配置--> <configuration> <!--这一部分是为了实现对远程docker容器的控制--> <!--docker主机地址,用于完成docker各项功能,注意是tcp不是http!--> <dockerHost>tcp://公网IP:2376</dockerHost> <!--docker远程访问所需证书地址,如果docker远程主机没有启用TLS验证则不需要配证书--> <certPath>${project.basedir}/docker/ssh</certPath> <!--这一部分是为了实现docker镜像的构建和推送--> <!--registry地址,用于推送,拉取镜像,我这里用的是阿里的registry--> <registry>registry.cn-shenzhen.aliyuncs.com</registry> <!--认证配置,用于私有registry认证,如果忘记了可以去阿里的registry查看--> <authConfig> <push> <username>这里填registry的用户名</username> <password>这里填registry的密码</password> </push> </authConfig> <!--镜像相关配置,支持多镜像--> <images> <!-- 单个镜像配置 --> <image> <!--镜像名(含版本号)--> <name>命名空间/仓库名称:镜像版本号</name> <!--别名:用于容器命名和在docker-compose.yml文件只能找到对应名字的配置--> <alias>${project.name}</alias> <!--镜像build相关配置--> <build> <!--使用dockerFile文件--> <dockerFile>${project.basedir}/docker/${project.name}</dockerFile> </build> <!--配置docker-compose文件--> <external> <type>compose</type> <basedir>${project.basedir}/docker</basedir> <composeFile>docker-compose.yml</composeFile> </external> <!--容器run相关配置--> <run> <!--配置运行时容器命名策略为:别名,如果不指定则默认为none,即使用随机分配名称--> <namingStrategy>alias</namingStrategy> </run> </image> </images> </configuration> </plugin>
maven指令 | 功能 |
---|---|
docker:start | 创建和启动容器 |
docker:stop | 停止并销毁容器 |
docker:build | 构建镜像 |
docker:watch | 自动进行重建和重启 |
docker:push | 将镜像推送到registry |
docker:remove | 从本地docker主机删除镜像 |
docker:logs | 显示容器日志 |
docker:source | 将docker build archive附加到Maven项目 |
docker:save | 将镜像保存到文件 |
docker:volume-create | 创建卷以在容器之间共享数据 |
docker:volume-remove | 删除创建的卷 |
#打包到容器运行的完整流程
mvn clean package docker:stop docker:remove docker:build docker:run
#不是每一次运行都要推送镜像,如果要的话可以单独调用docker:push
mvn docker:push
#示例配置 <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.33.0</version> <configuration> <dockerHost>tcp://111.229.61.54:2375</dockerHost> <registry>registry.cn-shenzhen.aliyuncs.com</registry> <authConfig> <push> <username>icodingallen</username> <password>icoding123</password> </push> </authConfig> <images> <image> <name>icoding/icoding-docker:v1.2</name> <build> <!--使用dockerFile文件 <dockerFile>${project.basedir}/docker/${project.name}</dockerFile>--> <dockerFile>${project.basedir}/Dockerfile</dockerFile> </build> <run> <ports> <port>8080:8080</port> </ports> </run> </image> </images> </configuration> </plugin>
FROM java:8
LABEL maintainer=icoding
ADD target/*.jar /app.jar
EXPOSE 8080
CMD ["java","-jar","app.jar"]
@RestController
public class HelloController {
@Value("${project.version}")
String ver;
@Value("${project.name}")
String name;
@GetMapping("/")
public String hello(){
return "Hello Docker!"+ver+"=>"+name;
}
}
#获取maven pom对象的相关属性值。在springboot中获取如下
project.version=@project.version@
project.name=@project.name@
#在pom文件中直接使用${project.xxxx},按照对象属性关系获取即可
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。