元数据卡
- 前置知识:CI/CD 基本概念(上一页)
- 预计时间:15 分钟
- 完成标志:能在本地走通代码→容器化的全流程
热身(5 分钟)
从头创建本章的 hello-atlas 项目,在本地跑起来:
- 按
ch08-dev-to-deploy的步骤创建目录结构和文件 - 运行
mvn clean package -DskipTests - 运行
java -jar target/hello-atlas-1.0.0.jar - 访问
localhost:8080看到欢迎页面
挑战(15 分钟)
- 编写 Dockerfile 将 hello-atlas 应用容器化
- 用
docker build -t hello-atlas:v1 .构建镜像 - 用
docker run -d -p 8080:8080 --name hello-atlas hello-atlas:v1启动容器 - 确认
localhost:8080能访问 - 用
docker logs hello-atlas查看启动日志
排障
场景 1:端口冲突
你在本地调试时,java -jar 占着 8080,docker run 也占着 8080——报错 "Address already in use"。
bash
# 找到谁占着 8080
sudo lsof -i :8080
# 方案 1:杀掉它
kill -9 <PID>
# 方案 2:换个端口启动 Docker
docker run -d -p 8081:8080 hello-atlas:v1场景 2:我改了代码,但容器里还是旧的
你可能忘记重新构建镜像了。改了代码后需要:
bash
# 重新构建
docker build -t hello-atlas:v2 .
# 停止旧容器
docker stop hello-atlas && docker rm hello-atlas
# 启动新容器
docker run -d -p 8080:8080 --name hello-atlas hello-atlas:v2容器不会自动感知代码变化——你需要重新 build。
→ 下一站:变量村
工坊的师傅拍了拍你的肩:"出门朝东走,有个叫变量村的地方,那边有位老陈师傅——他能教你真本事。"
第一卷:编程之基,从那里开始。