SpringCloud笔记十:springCloud和Docker整合部署

SpringCloud笔记十:springCloud和Docker整合部署

构建SpringBoot应用Docker镜像
  1. 官方文档

官方文档

  1. maven里面添加配置
<properties>
<docker.image.prefix>公司名字</docker.image.prefix>
</properties>
<build>
    <finalName>docker-demo</finalName>
    <plugins>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.3.6</version>
            <configuration>
                <repository>${docker.image.prefix}/${project.artifactId}</repository>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

配置讲解
Spotify 的 docker-maven-plugin 插件是用maven插件方式构建docker镜像的。
p r o j e c t . b u i l d . f i n a l N a m e 产 出 物 名 称 , 缺 省 为 {project.build.finalName} 产出物名称,缺省为 project.build.finalName{project.artifactId}-${project.version}

​ project.artifactId的值要小写

打包SpringCloud镜像并上传私有仓库并部署
  1. 创建Dockerfile,默认是根目录,(可以修改为src/main/docker/Dockerfile,如果修改需要制定路径)

Dockerfile:由一系列命令和参数构成的脚本,这些命令应用于基础镜像,最终创建一个新的镜像。

就相当于一个加工厂,根据原材料将项目加工成一个镜像。

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT [“java”,"-jar","/app.jar"]

  1. 参数讲解

参数讲解:
FROM : 需要一个基础镜像,可以是公共的或者是私有的, 后续构建会基于此镜像,如果同一个Dockerfile中建立多个镜像时,可以使用多个FROM指令

​ VOLUME 配置一个具有持久化功能的目录,主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。/tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录

​ ARG 设置编译镜像时加入的参数, ENV 是设置容器的环境变量

​ COPY : 只支持将本地文件复制到容器 ,还有个ADD更强大但复杂点

​ ENTRYPOINT 容器启动时执行的命令

​ EXPOSE 8080 暴露镜像端口

  1. 构建镜像

mvn install dockerfile:build

  1. 打标签

  2. 推送到仓库

  3. 服务端拉取,然后运行

  4. 运行时注意

docker run -d --name “docker-demo” -p 8088:8080 909ff4c0319a

第一个8088是外部访问的端口

第二个8080是内部服务启动的端口

  1. 进行测试

curl “http:127.0.0.1:xxx”

  1. 所有对外的都要经过网关才可以对外,应用间通信(除非跨机房)都用内网通信。
docker配置redis
  1. 搜索redis

docker search redis

  1. 拉取redis

docker pull docker.io/redis

  1. 运行redis

启动 docker run --name “xd_redis” -p 6379:6379 -d 4e8db158f18d

参考:
docker run --name “xd_redis” -p 6379:6379 -d 4e8db158f18d --requirepass “123456” -v $PWD/data:/data

  1. 访问redis容器里面,进行操作

docker exec -it 4e430ef837c6 redis-cli

生产环境常见问题以及中心配置
  1. maven打包构建,会触发单元测试,部分情况可以跳过,

mvn install -Dmaven.test.skip=true dockerfile:build

  1. 生产环境不能用localhost 或者 127.0.0.1, 一定要用内网通信ip (虚拟主机映射,本地域名映射 hosts)
技术未来
  1. k8s,service mesh,server less等技术,未来将成为前沿技术。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值