Docker-Compose启动失败:无法找到Backend的Dockerfile
问题:Docker Compose构建后端时提示找不到Dockerfile
问题场景
使用docker-compose.yml部署包含后端(Express)、前端(React)及MySQL数据库的项目,后端和前端目录下分别存放对应Dockerfile。执行docker-compose up -d命令时,MySQL镜像拉取完成,但后端构建失败,报错提示无法找到Dockerfile。
错误日志
(base) omarjandali@omarsMBPM1Max Fotos-React-Express % docker-compose up -d [+] Running 12/12 ⠿ mysqldb Pulled 10.9s ⠿ a2a00260331c Pull complete 4.3s ⠿ 6d8167f2fcbe Pull complete 4.3s ⠿ 32454e9854ca Pull complete 4.4s ⠿ 473e2917b0d5 Pull complete 4.5s ⠿ 5173f8104ec8 Pull complete 4.6s ⠿ 32e218351f9a Pull complete 4.6s ⠿ fc9e1a82359a Pull complete 5.2s ⠿ c602a3ea2ce7 Pull complete 5.2s ⠿ 3c9ea9927039 Pull complete 8.1s ⠿ dfb1b236c7fc Pull complete 8.2s ⠿ e2ad62bd72a7 Pull complete 8.3s [+] Building 0.1s (3/4) => [fotos-react-express-backend internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 126B 0.0s => [fotos-react-express-frontend internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 2B 0.0s => [fotos-react-express-backend internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount3723136338/Dockerfile: no such file or directory
配置文件与Dockerfile内容
docker-compose.yml
version: '3.8' services: mysqldb: platform: linux/x86_64 image: mysql:5.7 restart: unless-stopped env_file: ./.env environment: - MYSQL_ROOT_PASSWORD=$MYSQLDB_ROOT_PASSWORD - MYSQL_DATABASE=$MYSQLDB_DATABASE ports: - $MYSQLDB_LOCAL_PORT:$MYSQLDB_DOCKER_PORT volumes: - db:/var/lib/mysql networks: - backend backend: depends_on: - mysqldb build: ./backend restart: unless-stopped env_file: ./.env ports: - $NODE_LOCAL_PORT:$NODE_DOCKER_PORT environment: - DB_HOST=mysqldb - DB_USER=$MYSQLDB_USER - DB_PASSWORD=$MYSQLDB_ROOT_PASSWORD - DB_NAME=$MYSQLDB_DATABASE - DB_PORT=$MYSQLDB_DOCKER_PORT - CLIENT_ORIGIN=$CLIENT_ORIGIN networks: - backend - frontend frontend: depends_on: - backend build: context: ./frontend args: - REACT_APP_API_BASE_URL=$CLIENT_API_BASE_URL ports: - $REACT_LOCAL_PORT:$REACT_DOCKER_PORT networks: - frontend volumes: db: networks: backend: frontend:
后端Dockerfile
FROM node:14 WORKDIR /backend COPY package.json . RUN npm install COPY . . CMD npm start
前端Dockerfile
FROM node:14 as build-stage WORKDIR /frontend COPY package.json . RUN npm install COPY . . ARG REACT_APP_API_BASE_URL ENV REACT_APP_API_BASE_URL=$REACT_APP_API_BASE_URL RUN npm run build
项目目录结构
项目根目录为Fotos-React-Express,目录结构如下:
.envdocker-compose.ymlbackend/(包含后端代码及Dockerfile)frontend/(包含前端代码及Dockerfile)
解决方案
- 检查前端目录下的Dockerfile:错误日志显示前端Dockerfile仅传输了2B,大概率是文件为空或文件名错误。确认
frontend目录下存在**Dockerfile**(无后缀、首字母大写),且文件内容完整(与提供的前端Dockerfile一致)。 - 验证后端目录的Dockerfile:确保
backend目录下的Dockerfile文件名正确、文件存在且内容完整。 - 清理缓存重新构建:修复文件问题后,执行以下命令清除构建缓存并重新部署:
docker-compose build --no-cache docker-compose up -d
内容的提问来源于stack exchange,提问作者ojandali
相关产品推荐
相关产品推荐

