元数据卡
- 前置知识:全链路和 CI/CD 概念
- 预计时间:5 分钟(参考性质)
- 完成标志:知道部署选项和常用命令
全链路速查
| 阶段 | 命令 | 产物 |
|---|---|---|
| 写代码 | 编辑器 | .java 源文件 |
| 编译打包 | mvn clean package | target/*.jar |
| 容器化 | docker build -t name . | Docker 镜像 |
| 推送仓库 | docker push user/name:tag | 远程镜像 |
| 部署 | docker run 或 docker compose up | 运行中的容器 |
| 自动化 | GitHub Actions → .github/workflows/*.yml | 自动构建 |
常用 Docker 命令
| 场景 | 命令 |
|---|---|
| 构建镜像 | docker build -t name:tag . |
| 列出镜像 | docker images |
| 运行容器 | docker run -d -p 8080:8080 --name app name:tag |
| 列出容器 | docker ps(运行中)/ docker ps -a(所有) |
| 看日志 | docker logs -f <name> |
| 进容器 | docker exec -it <name> bash |
| 停容器 | docker stop <name> |
| 删容器 | docker rm <name> |
| 删镜像 | docker rmi <name>:<tag> |
| Compose 启动 | docker compose up -d |
| Compose 停止 | docker compose down |
镜像仓库推送
bash
# Docker Hub
docker tag name:tag username/name:tag
docker push username/name:tag
# GitHub Container Registry
docker tag name:tag ghcr.io/username/repo:tag
echo $TOKEN | docker login ghcr.io -u username --password-stdin
docker push ghcr.io/username/repo:tag常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
Address already in use | 端口冲突 | 换端口或杀占用进程 |
no main manifest attribute | JAR 入口未配置 | 检查 Maven 插件配置 |
docker: command not found | Docker 没装 | 去 docker.com 下载 |
port is already allocated | 宿主机端口被占 | lsof -i :端口 找谁在用 |