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

3.其它

3.1 dockerfile可以自由化定制

3.2 利用maven profile实例多环境自动打包,编译是指定-Pprofile环境参数

3.3 源码请联系作者