一、Dockerfile(构建镜像脚本)
用于定义镜像分层构建规则,每条指令生成一层镜像。
基础模板(Java SpringBoot 示例)
# 基础镜像
FROM openjdk:17-jdk-slim
# 作者信息
MAINTAINER admin
# 设置工作目录
WORKDIR /app
# 复制jar包到容器内
COPY target/demo.jar app.jar
# 容器暴露端口(仅声明,不自动映射)
EXPOSE 8080
# 启动命令
ENTRYPOINT ["java","-jar","app.jar"]
常用指令
FROM:必须首行,指定父镜像WORKDIR:容器内工作目录COPY/ADD:复制本地文件进镜像(ADD 支持解压远程文件)RUN:构建时执行命令(安装依赖)EXPOSE:声明对外端口ENV:设置环境变量ENTRYPOINT/CMD:容器启动命令VOLUME:挂载数据卷
构建镜像命令
# 当前目录Dockerfile构建,命名镜像
docker build -t demo:1.0 .
二、docker-compose.yml(多容器编排文件)
管理一组关联容器(数据库 + 后端 + 前端),一键启停。
最简示例(SpringBoot + MySQL)
version: "3.8"
services:
# mysql服务
mysql:
image: mysql:8.0
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: demo_db
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
restart: always
# 后端服务
app:
build: . # 使用当前目录Dockerfile构建镜像
container_name: spring-app
ports:
- "8080:8080"
depends_on:
- mysql
restart: always
# 持久化数据卷
volumes:
mysql-data:
常用操作命令
# 启动所有服务
docker-compose up -d
# 停止并删除容器
docker-compose down
# 查看日志
docker-compose logs -f
# 重新构建镜像启动
docker-compose up --build -d
三、.dockerignore(构建忽略文件)
和 .gitignore 用法一致,构建镜像时忽略本地文件,减小镜像体积。 示例内容:
# 忽略maven打包缓存
target/*.log
# IDE配置
.idea/
.vscode/
# git文件
.git/
.gitignore
# 本地环境文件
.env.local
# 系统文件
*.md
README.md
四、.env(环境变量配置文件)
配合 docker-compose.yml 使用,统一管理账号密码、端口等变量,避免硬编码。
.env 文件
MYSQL_ROOT_PWD=root123
APP_PORT=8080
DB_PORT=3306
compose 中引用
mysql:
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PWD}
ports:
- "${DB_PORT}:3306"
补充:完整项目文件结构
项目根目录
├── Dockerfile # 镜像构建
├── docker-compose.yml # 容器编排
├── .dockerignore # 忽略文件
├── .env # 环境变量
└── target/
└── demo.jar原文链接
欢迎访问 小易撩挨踢