hel*_*osk 2 docker docker-compose
我正在使用 docker-compose,但是当我再次尝试构建它时,显示此错误,我多次构建了这个 docker-compose:
ERROR: Service 'api' failed to build: max depth exceeded
Run Code Online (Sandbox Code Playgroud)
我尝试执行 docker system prune 来清理我的容器,但没有用。
docker-compose.yml
version: "3"
services:
client:
container_name: my_client
image: mhart/alpine-node:12
build: ./client
restart: always
ports:
- "3000:3000"
working_dir: /client
volumes:
- ./client:/client
entrypoint: ["npm", "start"]
links:
- api
networks:
- my_network
api:
container_name: my_api
build: ./api
restart: always
ports:
- "9000:9000"
environment:
DB_HOSTNAME: mysql
working_dir: /api
volumes:
- ./api:/api
depends_on:
- mysql
networks:
- my_network
mysql:
container_name: my_mysql
build: ./db
restart: always
volumes:
- /var/lib/mysql
- ./db:/db
ports:
- "3307:3306"
environment:
- MYSQL_ROOT_PASSWORD=n
- MYSQL_USER=n
- MYSQL_PASSWORD=n
- MYSQL_DATABASE=n
networks:
- my_network
command: '--default-authentication-plugin=mysql_native_password'
networks:
my_network:
driver: bridge
Run Code Online (Sandbox Code Playgroud)
这是 Dockerfile:
FROM mhart/alpine-node:12
WORKDIR /api
COPY package*.json /api/
RUN npm i -G nodemon
RUN npm install
COPY . /api/
EXPOSE 9000
CMD ["npm", "run", "dev"]
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏。
所以,我发现,我只需要执行docker system prune -a删除任何停止的容器。现在 --build 又开始工作了。
此命令删除了与我的 dockerfile 相关的所有本地 docker 图像。多次构建后,我的本地存储已达到有限,因此超出了错误最大深度。
最大深度并不表示存储容量不足错误(尽管修剪可能会意外修复它)。
相反,它表明api您正在构建的图像具有太多层。
一个合理的理论是,您的撰写文件中包含此内容会导致递归:
image: mhart/alpine-node:12
build: ./client
Run Code Online (Sandbox Code Playgroud)
这在 Dockerfile 中
FROM mhart/alpine-node:12
Run Code Online (Sandbox Code Playgroud)
(我假设 Dockerfile./client也是FROM同一个镜像)。
您的构建本质上是在mhart/alpine-node:12每次运行时在本地映像上添加几层(您可以通过运行来确认docker history mhart/alpine-node:12)。
如果是这样,您可能应该image在撰写文件中重命名。
| 归档时间: |
|
| 查看次数: |
1968 次 |
| 最近记录: |