易君召
易君召
发布于 2026-07-16 / 11 阅读
0
0

Docker 核心文件全解:Dockerfile、docker-compose.yml、.dockerignore

一、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"]

常用指令

  1. FROM:必须首行,指定父镜像

  2. WORKDIR:容器内工作目录

  3. COPY/ADD:复制本地文件进镜像(ADD 支持解压远程文件)

  4. RUN:构建时执行命令(安装依赖)

  5. EXPOSE:声明对外端口

  6. ENV:设置环境变量

  7. ENTRYPOINT/CMD:容器启动命令

  8. 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

原文链接 https://www.yijunzhao.cn/archives/docker-core-files-guide-dockerfile-docker-compose-dockerignore

欢迎访问 小易撩挨踢

https://www.yijunzhao.cn/


评论