maven将项目war包编译为docker镜像发布至远程linux服务器
1.开发端
1.1maven插件
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.12</version>
<configuration>
<imageName>${project.name}:${project.version}</imageName>
<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
<skipDockerBuild>false</skipDockerBuild>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.war</include>
</resource>
</resources>
</configuration>
</plugin>
1.2 dockerfile
FROM docker.io/tomcat ##基础镜像
MAINTAINER ray-ldy
ENV DIR_WEBAPP /usr/local/tomcat/webapps/ ## 环境变量
ADD study-jfinal.war $DIR_WEBAPP/study-jfinal.war ## 发布jar包
EXPOSE 8080 ## 开发端口
CMD ["catalina.sh", "run"] ## 入口命令
1.3 远程地址
在windows系统环境变量中新建DOCKER_HOST,值为tcp://192.168.20.129:2375
1.4 发布镜像
mvn clean package docker:build -DskipTests
2.docker服务端配置
2.1 远程配置
vi /usr/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
输入#netstat -anp|grep 2375 显示docker正在监听2375端口,
输入#curl 127.0.0.1:2375/info 显示信息,证明远程api配置成功
2.2 mysql镜像
1 拉取mysql镜像,采用网易加速地址
docker pull hub.c.163.com/library/mysql:5.7
2 重命名镜像名
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
3 创建用于挂载的目录
sudo mkdir /my/mysql/datadir #用于挂载mysql数据文件
sudo mkdir /my/mysql/conf.d #用于挂载mysql配置文件
sudo chown yaoren:docker /my #修改/my目录拥有者
4 使用镜像创建容器
docker run --name mysql5.7 -p 3306:3306 -v /my/mysql/datadir:/var/lib/mysql -v /my/mysql/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
命令解析:
--name:容器名
-p:映射宿主主机端口
-v:挂载宿主目录到容器目录
-e:设置环境变量,此处指定root密码,mysql必须指定
-d:后台运行容器
2.3 启动实例
docker run -d -p 8080:8080 -name study-jfinal -link ray-mysql:db study-jfinal:1.0-SNAPSHOT
命令解析:
--name:容器名
--link:链接mysql镜像实例
-p:映射宿主主机端口
-d:后台运行容器
jdbc使用链接串:url=jdbc:mysql://db:3306/study-jfinal,db为链接实例别名
进入容器bash:docker exec -it study-jfinal bash