Docker学习之路(六) 实战部署Springboot项目
部署前 咱们先删除 服务器上的全部 镜像以及 容器
docker rmi -f $(docker images -aq)
docker rm -f $(docker images -aq)
docker 安装 Mysql 容器
docker run -it -d -v /docker/volumes/mysql/conf:/etc/mysql/conf.d -v /docker/volumes/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql -p 3306:3306 mysql:5.7.30
导入sql 文件到我们的容器 mysql 中
使用 idea 将其打包成docker镜像
(1)准备
我们也可以使用idea 连接到我们 服务器上的docker
首先 需要下载一个插件 名为 docker 2020版IDEA 已经默认给我们下载好了
这里设置要连接的docker 服务地址以及端口
docker 默认是未开启外部访问的
idea 需要连接的话 咱们需要额外配置,使其开启远程访问
vim /usr/lib/systemd/system/docker.service
注意查看文件 稍微修改一点
保险起见 复制之前的文件并注释
使用我们下边这行代码配置 其暴露端口 随意 (注意安全组以及防火墙开放对应)
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:6500 -H unix:///var/run/docker.sock
重启
systemctl daemon-reload
systemctl restart docker
然后使用IDEA 再次连接,就可以了
至于 在idea 中 打包项目到docker 有多种方式
我这里采用的mvn 打包 ,并设置 Img 前缀为阿里云一个仓库的名字
(2) pom.xml 添加 plagin
我这里附上我的整个build
<build>
<finalName>springboot-shiro</finalName>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*</include>
</includes>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
<mainClass>${startup.main}</mainClass>
</configuration>
</plugin>
<!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 -->
<!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<!-- 指定Dockerfile所在的路径 -->
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
<dockerHost>http://47.97.118.22:6500</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<!--添加配置跳过测试-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
在上方的 properties 添加 阿里云仓库前缀 以及项目启动类所在位置
<docker.image.prefix>registry.cn-chengdu.aliyuncs.com/leileideve/spring-boot-project</docker.image.prefix>
<startup.main>com.example.leilei.SpringbootShiroApplication</startup.main>
(3)编写咱们的 Dockerfile文件
我这里指定的Dockerfile路径 是 项目根目录/docker/
对应着我们打包插件的
<dockerDirectory>${project.basedir}/docker</dockerDirectory>
#所需基础镜像
FROM openjdk:8-jdk-alpine
#作者信息
MAINTAINER leilei<leileideve@163.com>
#具名挂载
VOLUME /docker/springboot
#端口暴露80
EXPOSE 80
#将我们的jar 添加到容器中 并取名为application.jar
ADD springboot-shiro.jar application.jar
# 执行命令
ENTRYPOINT ["java","-Xmx350m","-jar" ,"application.jar"]
(4) 执行打包命令
mvn clean package docker:build
目前仅运行了我们开始创建的 mysql 容器
我们开始打包
打包中–Log 日志
打包完成
查看服务器 —船新版本的我们自己项目容器 就搭建好了!!!
运行
docker run -d -p 6501:80 --name springboot-shiro 9ed51ea36a98
浏览器查看 -----------来咯来咯,他真的来咯
我们登陆进去 测试一下是否能连到咱搭建的mysql 容器-------------也是可以的
把我们的项目镜像 推送到 阿里云仓库
具体的 推送流程 请查看学习五 或者 查看查看阿里云 (创建仓库后教程非常详细)
sudo docker login --username=xxxxxxxx registry.cn-chengdu.aliyuncs.com
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5fKhG0r7-1590327481740)(C:\Users\leilei\AppData\Roaming\Typora\typora-user-images\image-20200524213057803.png)]
那么 目前的 通过Dockerfile文件创建容器 以及在IDEA 中一键打包项目到docker 就完成了!
后续更新 idea 中 项目打包镜像 以及推送到 自己私有仓库 !
Bye Bye~~~~