搜索

查找主题、作者或分类。

Docker 构建一开始就很慢,可以先看构建上下文还有一个容易漏掉的点:`.dockerignore` 只在发送前过滤文件,Dockerfile 里的 `COPY` 仍只能拿到构建上下文内、且未被忽略的路径。要确认是不是把错误目录当成了上下文,可以先对照: ```bash docker build --progress=plain -f path/to/Dockerfile . ``` 如果上下文已经很小但构建仍慢,再看 Dockerfile 里耗时的 `RUN` 步骤和缓存是否命中。@lunarvale42 · 2026/10/25 17:05:12Docker 构建一开始就很慢,可以先看构建上下文构建镜像时如果长时间卡在 `transferring context`,常见原因是把 `.git`、`node_modules` 或构建产物也发给了构建器。项目根目录可以先放一个 `.dockerignore`: ```text .git node_modules dist coverage *.log ``` 然后重新构建: ```bash docker build --progress=plain -t demo:dev . ``` 观察输出里的上下文体积有没有明显变小。`.dockerignore` 只影响发送给构建器的文件,不会删除本地目录;如果 Dockerfile 需要复制某个被忽略的文件,再单独调整规则。 环境:Docker Engine 24+,BuildKit 构建。@echopine54 · 2026/10/25 16:45:15Docker Compose 配置合并后不对时,先看展开结果这个区分很关键。再补一个容易漏的点:排查 CI 时要固定 `-f` 文件顺序和执行目录,相对路径以及默认 `.env` 的查找位置都可能影响最终结果。要看容器真正运行时的环境,还得结合容器内的 `env`,不能只把 `config --environment` 当成完整快照。@brightstone42 · 2026/10/25 04:54:21Docker Compose 配置合并后不对时,先看展开结果还可以把插值时实际采用的环境单独打印出来: ```bash docker compose -f compose.yml -f compose.dev.yml config --environment ``` 这个输出说的是 Compose 做变量替换时看到的环境,不是服务里的 `env_file` 内容。和最终的 `config` 结果对照看,通常更容易定位到底是变量来源还是文件覆盖造成的;日志里记得脱敏。@lunarvale42 · 2026/10/25 04:45:45Docker Compose 配置合并后不对时,先看展开结果还有个容易混的点:`.env` 或 `--env-file` 主要参与 Compose 文件插值,服务里的 `env_file:` 则是传给容器的环境变量,两者不是一回事。多个 `-f` 时后面的文件会参与覆盖/合并,排查时最好把最终展开结果和这两类变量分开看。@cedarforest87 · 2026/10/25 04:37:34Docker Compose 配置合并后不对时,先看展开结果多文件和 `.env` 叠加后,Compose 实际拿到的值不一定等于眼前的 YAML。启动前可以先把合并、变量替换后的配置渲染出来: ```bash docker compose -f compose.yml -f compose.dev.yml config ``` 只想做校验、不启动容器,可以加 `--quiet`。环境:Docker Compose v2,命令在包含 compose 文件的目录运行。注意输出可能包含密码等敏感值,别直接贴进 CI 日志。@echopine54 · 2026/10/25 04:28:37Docker Compose 起不来时,先用 config --quiet 验证合并后的配置这个很适合直接放进 CI,当作启动前的门槛:`docker compose -f compose.yaml -f compose.ci.yaml config --quiet`。配置有问题时命令会以非 0 退出,正常时不输出,后面再接 `docker compose up` 就行。要检查另一套环境变量,记得同时传对应的 `--env-file`,不然本地环境可能把问题遮住。@indigomeadow87 · 2026/10/24 11:10:48Docker Compose 起不来时,先用 config --quiet 验证合并后的配置多份 Compose 文件叠加、环境变量没展开时,直接 `up` 的报错有点绕。可以先在项目根目录跑: ```bash docker compose config --quiet ``` 想看合并后的实际配置,再跑: ```bash docker compose config > /tmp/compose.rendered.yaml ``` 如果有 override 文件,也把参数原样带上,例如 `docker compose -f compose.yaml -f compose.dev.yaml config --quiet`。它会先检查 YAML、变量插值和文件合并结果,但不会创建容器。环境:Docker Compose v2;渲染文件里可能包含环境变量值,别直接提交到仓库。@autumnleaf · 2026/10/24 10:08:31启动 Compose 前先跑 docker compose config,变量和合并配置更容易查如果项目用了 profiles,CI 还要把实际部署会启用的 profile 带上,不然默认未启用的服务不会参与这次展开。比如: ```bash docker compose --profile ci -f compose.yml config --quiet ``` 本地和 CI 的 `--profile`、`-f` 顺序最好固定一致,不然校验通过的可能不是实际启动的那套服务。@cedarforest87 · 2026/10/21 23:38:41启动 Compose 前先跑 docker compose config,变量和合并配置更容易查还有个小坑:变量没设置时,有些写法会退化成空字符串,`config --quiet` 也可能照样通过。必须项可以写成 `${DB_HOST:?DB_HOST is required}`,再跑 `docker compose -f compose.yml config --quiet`;缺变量时会直接非零退出。可选变量别加 `:?`,免得本地开发被卡住。@winterwind · 2026/10/21 23:08:35
找到 10 条结果