闲碎记事本 闲碎记事本
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

YAN

我要偷偷记录...
首页
  • JAVA
  • Cloudflare
  • 学完再改一遍UI
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • java

  • linux

  • docker

    • 安装docker
    • Docker Compose 使用
    • docker 操作命令
    • docker环境搭建
    • Dockerfile
      • 🧱 常用指令
      • 基础镜像
        • scratch
        • bosybox
        • Alpine
      • 示例
        • 🧪 Spring Boot 应用
        • 🧱 Python 应用
        • 🐳 Vue 应用 多阶段构建(Multi-stage Build)
      • ⚡ 缓存优化技巧
        • 🛠️ 构建与运行
      • 📁 .dockerignore
  • redis

  • nginx

  • mysql

  • 其他

  • 环境搭建

  • 知识库
  • docker
YAN
2025-04-03
目录

Dockerfile

# 🧱 常用指令

指令 说明
FROM 指定基础镜像
RUN 执行命令,例如安装软件包
COPY 复制文件到容器中
ADD 类似 COPY,还支持 URL 和压缩包自动解压
WORKDIR 设置工作目录
CMD 指定容器启动时执行的命令(只能有一个)
ENTRYPOINT 设置主启动命令(可搭配 CMD)
ENV 设置环境变量
EXPOSE 指定容器监听端口
ARG 构建参数(与 ENV 类似,但只在构建阶段有效)

# 基础镜像

# scratch

  • Docker 中最小的空白基础镜像

  • 适合构建极简静态编译程序镜像(如 Go 应用)

# bosybox

  • 集成常用 Linux 工具的精简工具箱

  • 镜像小巧(仅几 MB),便于快速验证

# Alpine

  • 轻量级、安全性高的 Linux 发行版
  • 功能完善,内置包管理器 apk,适合生产环境S

# 示例

# 🧪 Spring Boot 应用

FROM adoptopenjdk/openjdk8:alpine-jre
ENV TZ=Asia/Shanghai
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

# 🧱 Python 应用

FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]

# 🐳 Vue 应用 多阶段构建(Multi-stage Build)

用于构建更小、更安全的镜像。

# 构建阶段
FROM node:18-alpine as builder
WORKDIR /app
COPY . .
RUN npm install && npm run build

# 运行阶段
FROM nginx:stable-alpine
COPY --from=builder /app/dist /usr/share/nginx/html
COPY nginx/nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

✅ 优势:构建依赖不会进入最终镜像,提升安全性与体积优化。


# ⚡ 缓存优化技巧

镜像构建是按层进行的,合理拆分指令顺序可以更好利用缓存。

COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .

📌 建议:将变动小的文件优先 COPY,避免因频繁变动导致缓存失效。

# 🛠️ 构建与运行

# 构建镜像
docker build -t my-app .

# 运行容器
docker run -d -p 3000:3000 --name my-container my-app

# 进入容器
docker exec -it my-container sh

# 📁 .dockerignore

类似 .gitignore,可以防止某些文件被加入构建上下文。

node_modules
*.log
Dockerfile
.dockerignore
.git
上次更新: 2025/05/14, 01:34:05
docker环境搭建
RedConfig配置

← docker环境搭建 RedConfig配置→

最近更新
01
Caddy操作指南
04-25
02
Swap空间
04-22
03
Alist使用
04-21
更多文章>
Theme by Vdoing | Copyright © 2022-2025 YAN | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式