Docker进阶

本文详细介绍了如何使用SpringBoot编写项目,如何通过Dockerfile将其打包成镜像,包括构建步骤、镜像管理和容器启动,以及部署中间件如Redis的自定义配置。

1.编写自己的应用
编写一个springboot项目
2.将应用打包成镜像,编写dockerfile将应用打包成镜像

#以前的方式
将项目打成jar包,上传到服务器,运行命令java -jar 

#如何打包镜像
1.Dockerfile编写
FROM openjdk:8-jdk-slim
LABEL maintainer=leifengyang

COPY target/*.jar   /app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

#构建镜像
docker build -t java-demo:v1.0 .

3.启动容器

#启动容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

#分享镜像
# 登录docker hub
docker login
#给旧镜像起名
docker tag java-demo:v1.0  leifengyang/java-demo:v1.0
# 推送到docker hub
docker push leifengyang/java-demo:v1.0
# 别的机器
docker pull leifengyang/java-demo:v1.0
# 别的机器运行
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0 

4.部署中间件

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

#redis使用自定义配置文件启动

docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest  redis-server /etc/redis/redis.conf

#redis设置密码
requirepass xxxxx  #conf文件中设置
docker restart myredis 重启redis
### Docker 进阶教程与高级用法 #### 1. Docker 的跨平台支持与发展历程 Docker 最初是在 Ubuntu 12.04 上开发实现的,随后 Red Hat 和 Google 等公司也相继加入对其的支持。Red Hat 从 RHEL 6.5 开始正式支持 Docker 技术,而 Google 在其 PaaS 平台中广泛采用了这一技术[^1]。 #### 2. 使用 Docker Compose 实现多容器编排 在实际生产环境中,尤其是微服务架构下,单一的服务往往不足以满足需求。此时需要借助 Docker Compose 来简化多容器环境的配置和管理。Compose 提供了一种声明式的 YAML 文件格式,允许开发者定义多个服务及其之间的依赖关系,并能够一键启动整个应用栈[^2]。 以下是典型的 `docker-compose.yml` 示例: ```yaml version: '3' services: web: image: nginx:latest ports: - "80:80" depends_on: - app app: build: . environment: NODE_ENV: production ``` 此示例展示了如何通过单个文件描述两个相互关联的服务——前端 Web 服务器 (Nginx) 和后端应用程序节点。 #### 3. 构建高效镜像的最佳实践 为了减少最终生成的镜像大小并提升安全性,推荐采用 **多阶段构建** 方法。这种方法尤其适用于 Java 应用程序等场景,在这种情况下可以通过分层的方式先完成源码编译再复制到最小的基础运行时镜像中去[^4]。 例如以下是一个基于 Maven 的 Spring Boot 项目的多阶段构建过程: ```dockerfile # Stage 1: Build stage FROM maven:3.8-openjdk-17 AS builder WORKDIR /app COPY pom.xml . RUN mvn dependency:go-offline COPY src ./src RUN mvn package -DskipTests # Stage 2: Runtime stage FROM openjdk:17-jdk-slim WORKDIR /app COPY --from=builder /app/target/*.jar app.jar ENTRYPOINT ["java", "-jar", "/app/app.jar"] ``` 上述方法显著降低了最终交付物体积的同时还增强了隔离性和可维护性。 #### 4. 自动化测试报告集成方案 对于持续集成/持续部署(CI/CD),可以考虑利用 Allure Framework 结合 Docker 容器化方式快速搭建起一套完整的自动化测试框架体系结构。具体做法如下所示: 运行命令即可拉取官方提供的 allure-docker-service 镜像并将本地存储的结果同步至容器内部位置 `/app/results` 下面展示出来给用户访问查看。 ```bash docker run -d -p 5050:5050 -v $(pwd)/allure-results:/app/results allure-docker-service ``` 这一步骤极大地便利了团队成员间共享同一套标准化报表样式模板资源[^5]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值