Remove blank lines after code block markers

This commit is contained in:
yeasy
2026-03-21 22:36:09 -07:00
parent 312f8fea42
commit 9ac19d79ee
132 changed files with 0 additions and 1517 deletions

View File

@@ -6,7 +6,6 @@
COPY [选项] <源路径>... <目标路径>
COPY [选项] ["<源路径1>", "<源路径2>", ... "<目标路径>"]
```
`COPY` 指令将构建上下文中的文件或目录复制到镜像内
---
@@ -16,7 +15,6 @@ COPY [选项] ["<源路径1>", "<源路径2>", ... "<目标路径>"]
#### 复制单个文件
```docker
## 复制文件到指定目录
COPY package.json /app/
@@ -25,11 +23,9 @@ COPY package.json /app/
COPY config.json /app/settings.json
```
#### 复制多个文件
```docker
## 复制多个指定文件
COPY package.json package-lock.json /app/
@@ -39,16 +35,13 @@ COPY package.json package-lock.json /app/
COPY *.json /app/
COPY src/*.js /app/src/
```
#### 复制目录
```docker
## 复制整个目录的内容(不是目录本身)
COPY src/ /app/src/
```
> **注意**复制目录时复制的是目录的 **内容**不包含目录本身
```bash
@@ -57,7 +50,6 @@ src/ /app/src/
├── index.js → ├── index.js
└── utils.js └── utils.js
```
---
### 7.2.3 通配符规则
@@ -76,7 +68,6 @@ COPY hom* /mydir/ # home.txt, homework.md 等
COPY hom?.txt /mydir/ # home.txt, homy.txt 等
COPY app[0-9].js /app/ # app0.js ~ app9.js
```
---
### 7.2.4 目标路径
@@ -86,7 +77,6 @@ COPY app[0-9].js /app/ # app0.js ~ app9.js
```docker
COPY app.js /usr/src/app/
```
#### 相对路径基于 WORKDIR
```docker
@@ -94,18 +84,15 @@ WORKDIR /app
COPY package.json ./ # 复制到 /app/package.json
COPY src/ ./src/ # 复制到 /app/src/
```
#### 自动创建目录
如果目标目录不存在Docker 会自动创建
```docker
## /app/config/ 不存在也会自动创建
COPY settings.json /app/config/
```
---
### 7.2.5 修改文件所有者
@@ -113,7 +100,6 @@ COPY settings.json /app/config/
使用 `--chown` 选项设置文件的用户和组
```docker
## 使用用户名和组名
COPY --chown=node:node package.json /app/
@@ -126,7 +112,6 @@ COPY --chown=1000:1000 . /app/
COPY --chown=node . /app/
```
> 💡 结合 `USER` 指令使用确保应用以非 root 用户运行
---
@@ -141,12 +126,10 @@ COPY 会保留源文件的元数据:
这对于脚本文件特别重要
```docker
## start.sh 的可执行权限会被保留
COPY start.sh /app/
```
---
### 7.2.7 COPY vs ADD
@@ -159,7 +142,6 @@ COPY start.sh /app/
| 推荐程度 | **推荐** | 特殊场景使用 |
```docker
## 推荐:使用 COPY
COPY app.tar.gz /app/
@@ -169,7 +151,6 @@ RUN tar -xzf /app/app.tar.gz
ADD app.tar.gz /app/
```
> 笔者建议除非需要自动解压 tar 文件否则始终使用 COPY明确的行为比隐式的魔法更好
---
@@ -179,7 +160,6 @@ ADD app.tar.gz /app/
#### 从其他构建阶段复制
```docker
## 构建阶段
FROM node:20 AS builder
@@ -194,16 +174,13 @@ RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
```
#### 使用 --link 优化缓存
```docker
## 使用 --link 后,文件以独立层添加,不依赖前序指令
COPY --link --from=builder /app/dist /usr/share/nginx/html
```
`--link` 的优势
- 更高效利用构建缓存
@@ -217,7 +194,6 @@ COPY --link --from=builder /app/dist /usr/share/nginx/html
使用 `.dockerignore` 排除不需要复制的文件
```text
## .dockerignore
node_modules
@@ -227,7 +203,6 @@ node_modules
Dockerfile
.dockerignore
```
这可以
- 减小构建上下文大小
@@ -241,7 +216,6 @@ Dockerfile
#### 1. 利用缓存先复制依赖文件
```docker
## ✅ 好:先复制依赖定义,再安装,最后复制代码
COPY package.json package-lock.json ./
@@ -253,11 +227,9 @@ COPY . .
COPY . .
RUN npm install
```
#### 2. 使用 .dockerignore
```docker
## 确保 node_modules 不被复制
COPY . .
@@ -266,11 +238,9 @@ COPY . .
...
```
#### 3. 明确复制路径
```docker
## ✅ 好:明确的路径
COPY src/ /app/src/
@@ -280,7 +250,6 @@ COPY package.json /app/
COPY . .
```
---
> **🔥 踩坑实录**