当前位置: 首页 > news >正文

Docker 入门:容器化开发的强大工具

Docker 入门:容器化开发的强大工具

今天我们来深入探讨 Docker,一个彻底改变软件开发和部署方式的容器化平台。Docker 以其轻量、便携和高一致性的特性,成为现代 DevOps 和微服务架构的核心工具。本文将带你从零搭建一个简单的 Docker 应用,结合 Spring Boot 部署一个 Web 服务,适合初学者快速上手,同时为有经验的开发者提供进阶建议和优化思路。

Docker 通过容器技术将应用及其依赖打包,确保开发、测试和生产环境一致。本文基于 Docker 26.x(最新稳定版),使用 Maven 构建一个 Spring Boot 项目,并通过 Docker 容器运行。让我们开始吧!

前置准备

在开始之前,确保开发环境已就绪:

  • 操作系统:Linux(如 Ubuntu)、MacOS 或 Windows(推荐 WSL2)。
  • Docker:安装 Docker Desktop(Windows/Mac)或 Docker Engine(Linux)。
  • JDK:推荐 JDK 17(Spring Boot 3.x 要求 JDK 17+,2.x 支持 JDK 8+)。
  • Maven:用于构建 Spring Boot 项目,确保配置好环境变量。
  • IDE:IntelliJ IDEA 或 VS Code,方便编辑代码和 Dockerfile。
  • 项目结构:创建一个 Spring Boot 项目,目录如下:
    docker-demo
    ├── src
    │   ├── main
    │   │   ├── java
    │   │   │   └── com.example.demo
    │   │   │       ├── controller
    │   │   │       └── DemoApplication.java
    │   │   ├── resources
    │   │   │   └── application.properties
    │   └── test
    ├── Dockerfile
    └── pom.xml
    

安装 Docker

  • Linux:sudo apt update && sudo apt install docker.io
  • MacOS:brew install docker
  • Windows:下载 Docker Desktop(启用 WSL2)。
  • 验证:运行 docker --version 确认安装成功。

推荐使用 Spring Initializr 生成 Spring Boot 项目:

  • 项目:Maven
  • 语言:Java
  • Spring Boot 版本:3.3.x
  • 依赖:Spring Web

步骤 1: 创建 Spring Boot 项目

生成一个简单的 Spring Boot 项目,包含一个 REST 端点。

Maven 依赖

pom.xml 中配置:

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>docker-demo</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.4</version><relativePath/></parent><dependencies><!-- Spring Boot Web 启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
</project>

说明

  • spring-boot-starter-web:包含嵌入式 Tomcat 和 Spring MVC。
  • spring-boot-maven-plugin:生成可执行 JAR。

REST 控制器

com.example.demo.controller.HelloController 创建控制器:

package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String sayHello() {return "Hello, Docker!";}
}

配置文件

src/main/resources/application.properties 中配置端口(可选):

server.port=8080

步骤 2: 创建 Dockerfile

在项目根目录创建 Dockerfile

# 使用官方 OpenJDK 镜像作为基础
FROM openjdk:17-jdk-slim# 设置工作目录
WORKDIR /app# 复制 JAR 文件
COPY target/docker-demo-0.0.1-SNAPSHOT.jar app.jar# 暴露端口
EXPOSE 8080# 运行应用
ENTRYPOINT ["java", "-jar", "app.jar"]

说明

  • openjdk:17-jdk-slim:轻量级 JDK 17 镜像。
  • COPY:将构建的 JAR 复制到容器。
  • EXPOSE:声明应用端口。
  • ENTRYPOINT:启动 Spring Boot 应用。

步骤 3: 构建和运行 Docker 容器

  1. 构建 JAR 文件

    mvn clean package
    

    生成 target/docker-demo-0.0.1-SNAPSHOT.jar

  2. 构建 Docker 镜像

    docker build -t docker-demo .
    
  3. 运行容器

    docker run -d -p 8080:8080 docker-demo
    
  4. 测试

    • 访问 http://localhost:8080/hello,应返回 Hello, Docker!
    • 验证容器状态:docker ps

步骤 4: 使用 Docker Compose(可选)

为多容器场景(如 Spring Boot + MySQL),创建 docker-compose.yml

version: '3.8'
services:app:image: docker-demobuild:context: .dockerfile: Dockerfileports:- "8080:8080"depends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: your_passwordMYSQL_DATABASE: demo_dbports:- "3306:3306"

运行

docker-compose up -d

说明

  • 定义两个服务:Spring Boot 应用和 MySQL 数据库。
  • depends_on:确保数据库先启动。

步骤 5: 测试和调试

  1. 验证应用

    • 访问 http://localhost:8080/hello
    • 若使用 MySQL,需在 Spring Boot 项目中添加 JPA 和 MySQL 依赖,并配置 application.properties
  2. 调试技巧

    • 容器日志:docker logs <container_id>
    • 构建失败:检查 Dockerfile 语法或依赖。
    • 端口冲突:确保宿主机 8080 端口未被占用。
    • 清理容器:docker rm -f $(docker ps -aq)

进阶与最佳实践

  • 多阶段构建:优化镜像大小:
    FROM maven:3.8.6-openjdk-17 AS builder
    WORKDIR /app
    COPY . .
    RUN mvn clean package -DskipTestsFROM openjdk:17-jdk-slim
    WORKDIR /app
    COPY --from=builder /app/target/docker-demo-0.0.1-SNAPSHOT.jar app.jar
    EXPOSE 8080
    ENTRYPOINT ["java", "-jar", "app.jar"]
    
  • Docker Compose 高级配置:添加网络、健康检查和卷挂载。
  • 镜像优化:使用 .dockerignore 排除不必要文件。
  • CI/CD 集成:结合 GitHub Actions 或 Jenkins 自动化构建和部署。
  • 监控:使用 Prometheus 和 Grafana 监控容器性能。
  • 资源推荐:Docker 官网(docker.com)、《Docker Deep Dive》。多实践多容器应用和编排。

总结

通过这个 Docker 示例,你学会了创建 Spring Boot 项目、编写 Dockerfile、构建和运行容器。Docker 的容器化技术简化了开发和部署流程,适合微服务和 DevOps 场景。

http://www.dtcms.com/a/418297.html

相关文章:

  • iOS 26 全景揭秘,新界面、功能创新、兼容挑战与各种工具在新版系统中的定位
  • 北京交易中心网站电商网站建设需要
  • 【ansible/K8s】K8s的自动化部署源码分享
  • C++STL之list
  • CentOS 7安装部署RabbitMQ
  • 本地怎么远程调试服务器
  • AndroidID重置功能开发
  • 【Byte 类型】编程基石:揭开 `Byte`(字节)的神秘面纱
  • 天津做网站哪家服务好北京正邦品牌设计公司
  • 外贸搜素网站android studio开发app实例
  • 5. Prompt 提示词
  • android 自定义样式 Toast 实现(兼容 Android 4.1+~Android 16(API 16))
  • android SharedPreferences 工具类 * 兼容 Android 16+ (API 16)
  • 宁波易通建设网站网站备案信息代码
  • 阿里云OpenLake及行业解决方案年度发布,助力千行百业Data+AI一体化融合
  • 独立站收款方式有哪些
  • 2025 年 Python 数据分析全栈学习路线:从入门到精通的进阶指南
  • 行业类网站应如何建设网站怎么建设以及维护
  • Go 和云原生 的现状和发展前景
  • C# 中Byte类型转化问题
  • 紫外UV相机在机器视觉检测方向的应用
  • 一款国产开源免费的项目管理工具 - Kanass,超级轻量、简洁
  • 自己做的网站百度搜到新增接入 新增网站
  • (七——下)复习(分布式链路追踪/Rabiit MQ使用/Api Gateway)
  • 前端八股文 Vue上
  • OpenHarmony SELinux全面技术指南:从原理到实践的系统安全防护(全网最全)
  • 分布式计算的集大成时刻:从技术烟囱到架构交响乐
  • 嘉兴网站建设网址织梦博客网站模板
  • 网站备案查询工信部官网泵网站建设
  • 香港科技大学工学院2026/2027年度研究生课程招生宣讲会-厦门大学专场