使用dockerfile-maven原因:
为了简化操作,提高生产效率
安装docker
根据官网文档进行操作:https://docs.docker.com/engine/install/centos/
服务器环境为centOs7
- 清除默认系统安装包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
如果之前安装过,还要清除以下目录文件
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
查看安装的软件包命令(如果还需要别的命令,请自性查找😉...):
rpm -qa |grep docker
yum list installed |grep docker
2.更新一下系统的软件包索引
yum makecache fast
3.安装docker 所需的环境
sudo yum install -y yum-utils
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
切换阿里云的源,提高下载速度🔥(该说不说确实那啥)
4.到此 可以安装docker了
sudo yum install docker-ce docker-ce-cli containerd.io
5.docker一些常用命令
刷新配置文件
systemctl daemon-reload
启动
systemctl start docker
重新启动
systemctl restart docker
查看docker状态
systemctl status docker
停止
systemctl stop docker
查看信息
docker version
查看容器日志
docker logs -f -t --tail 100 [options:id]
-f:跟踪日志输出
--since :显示某个开始时间的所有日志
-t:显示时间戳
--tail :仅列出最新N条容器日志
6.docker主要基于两方面操作
镜像:
删除镜像
docker rmi [options:id]
容器:
停止容器
docker kill [options:id]
重启容器
docker restart [options:id]
7.该开始安装docker私服了
官方提供了镜像作为私服的存储,执行以下命令拉取私服
docker pull registry
8.配置私服
#cd /etc/docker/daemon.json -> 没有就自己在创建
{
#下载源
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
#对此上传的镜像信任,后期需要配置此地址跟dockerfile-maven插件结合使用
#ip为docker服务所在的地址
"insecure-registries": [
"ip:port"
]
}
9.最后启动私服即可
此处涉及一些 docker启动参数 可自行查找
docker run -dit -p 5000:5000 --name myregistry --restart=always registry
springboot结合插件进行打包
此处主要是对pom.xml进行配置即可,无需修改太多参数
项目的pom文件配置
<build>
<finalName>boot-docker</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<!-- dockerfile-maven-plugin建议用1.4.X 以后的版本,3之前会有一些小问题-->
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>${dockerfile-maven.version}</version>
<executions>
<execution>
<id>default</id>
<!-- 如过打包不想创建镜像,就注释掉此处-->
<goals>
<goal>build</goal>
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!--
ip:port 为docker远程访问的端口 docker.pro.adr 地址,前面有说明
repository:镜像名称,如果要推到私服,这个地址很关键
dockerfile:这个名称就很好理解
buildArgs:一些参数 打包时会传递到dockerfile文件中
-->
<repository>${docker.pro.adr}/${project.artifactId}</repository>
<dockerfile>${project.basedir}/Dockerfile</dockerfile>
<tag>${project.version}</tag>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
</buildArgs>
</configuration>
</plugin>
</plugins>
</build>
编写dockerfile
Dockerfile文件大概率要放在跟src同级目录
#FROM openjdk:[tag]
FROM openjdk:11
#COPY *.jar /app.jar
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
#对外暴露的端口
EXPOSE 9999
# 启动容器执行的命令
ENTRYPOINT ["java","-jar","/app.jar"]
其他的参数自己查吧,我也很懒的好么🤨
到此就可以进行打包后的私服发布了,如果是IDEA 请执行maven命令:
如果打包到服务器,就执行 mvn package
如果打包到私服,就执行 mvn deplay
&Q (问题)
1-开启docker远程访问
如果package 失败,请开启docker 远程访问端口,找到/lib/systemd/system/docker.service这个文件 修改如下配置 [port] 官网默认2375 端口,请自行修改,修改后记得重启和重载配置文件
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:<port>
2-本地开发没有docker环境
如果本地开发没有docker环境,那么请在系统环境便量中添加
DOCKER_HOST= tcp://ip:port 这个地址为docker服务所在地址
重点:端口要和docker远程访问开启的一致
最后说一下:
系统环境变量所配置的地址是为了上传项目到docker服务器后进行打包的地址
而“repository”中的地址是上传镜像到私服的地址