在win10中使用idea开发一个模块化的maven项目,而后想要把该项目直接编译到远程Linux服务器的Docker中,具体作法以下:
第一:在各模块中的pom文件中加入如下java
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <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}.jar</include> </resource> </resources> </configuration> </plugin>
第二:在各模块的src/main下面新建docker包,在src/main/docker下面新建Dockerfile与runboot.sh文件(文件内容因状况不一样就不贴了),结构以下linux
第三:在linux服务器上装好docker,个人linux版本为centos7,这里不建议使用#yum install docker方式安装,由于这种方式安装的版本比较旧,并且在配置远程api时要好多错误,建议使用方式docker
#curl -fsSL https://get.docker.com/ | sh或#yum install docker-engine,这里以17.0.3-ce版本为例,使用windows
#docker version命令便可验证是否安装成功,接下来要想在windows中操做远程linux中的docker,那前提是必须centos
开启docker远程API,修改docker配置文件#vi /usr/lib/systemd/system/docker.service ,进入编辑模式后,将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后以下所示api
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,这里就写4个0,你可别改为本身的ip哦,保存后退出,从新加载配置文件#systemctl daemon-reload ,启动docker #systemctl start docker ,服务器
输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info 显示一大堆信息,证实远程api就弄好了curl
事实证实:要开启远程链接必须,修改 vi /etc/sysconfig/docker-network,而不是第三步maven
而后重启dockertcp
sudo systemctl daemon-reload
sudo service docker restart
第四:在windows系统环境变量中新建DOCKER_HOST,值为tcp://10.100.74.220:2375,(你改为你本身的docker服务器ip地址)
第五步:打开dos窗口,即cmd命令行,进入到你要编译的项目文件夹下,
输入mvn clean package docker:build -DskipTests ,而后慢慢等待,直到最后build成功
第六步:登录linux,输入#docker images 发现本身的项目已经被编译成镜像了,能够启动容器运行镜像了,也至关于完成了项目的云部署
经常使用的命令
ps -aux | grep java
docker images 查看镜像 sudo docker rmi -f 1dd 删除镜像 docker rm -f `docker ps -a -q` 删除全部容器 docker run -p 8081:8050 -t zhujm/demo 运行镜像