0

我知道之前已经有其他人在这里问过这个问题,但是,我已经通过了他们并尝试了这些建议。我相信这是一个复杂的问题,因为每个人的文件看起来都不同,并且基于位置和路径而有所不同,我在 Docker 中还不熟悉。现在,当我在 docker-compose build 上运行时,程序告诉我

搭建服务器

回溯(最后一次调用):文件“compose/cli/main.py”,第 67 行,主文件“compose/cli/main.py”,第 126 行,perform_command 文件“compose/cli/main.py” ,第 302 行,在构建文件“compose/project.py”中,第 468 行,在构建文件“compose/project.py”中,第 450 行,在 build_service 文件中“compose/service.py”,第 1147 行,在构建中。 service.BuildError: (<Service: server>, {'message': 'Cannot locate specified Dockerfile: ./client/Dockerfile'})

在处理上述异常的过程中,又出现了一个异常:

回溯(最后一次调用):文件“docker-compose”,第 3 行,文件“compose/cli/main.py”,第 78 行,主要类型错误:只能将 str(不是“dict”)连接到 str [ 34923] 无法执行脚本 docker-compose在此处输入图像描述

我尝试将 Dockerfile 从客户端放置到与 docker-compose.yml 文件相同的目录以消除路径差异,但是,它仍然说同样的话。如果您有任何建议,请告诉我。谢谢!

这是我的 docker-compose.yml 文件

version: "3.7"

services:
  server:
    build:
      context: ./server
      dockerfile: ./client/Dockerfile
    image: myapp-server
    container_name: myapp-node-server
    command: /usr/src/app/node_modules/.bin/nodemon server.js
    volumes:
      - ./server/:/usr/src/app
      - /usr/src/app/node_modules
    ports:
      - "5050:5050"
    depends_on:
      - mongo
    env_file: ./server/.env
    environment:
      - NODE_ENV=development
    networks:
      - app-network
  mongo:
    image: mongo
    volumes:
      - data-volume:/data/db
    ports:
      - "27017:27017"
    networks:
      - app-network
  client:
    build:
      context: ./client
      dockerfile: Dockerfile
    image: myapp-client
    container_name: myapp-react-client
    command: npm start
    volumes:
      - ./client/:/usr/app
      - /usr/app/node_modules
    depends_on:
      - server
    ports:
      - "3000:3000"
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  data-volume:
  node_modules:
  web-root:
    driver: local

这是客户端文件夹中的 Dockerfile

FROM node:10.16-alpine

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install 

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

这是服务器文件夹中的 Dockerfile

FROM node:10.16-alpine

# Create App Directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install Dependencies
COPY package*.json ./

RUN npm install --silent

# Copy app source code
COPY . .

# Exports
EXPOSE 5050

CMD ["npm","start"]
4

1 回答 1

0

编辑 1:问题是 dockerfiles: 的路径不寻常client/docker-mern-basic。您可以在客户端路径的 VSCode 文件资源管理器中看到这一点。通过使路径和上下文/dockerfile 路径一致,消除额外docker-mern-basic路径来解决。请参阅下面的评论。

编辑0:这不能解决问题,如果我找不到任何其他可能的问题,我会删除它。

您的路径server.build.dockerfile与您的上下文无关。您提供了用作“根”的文件夹,server因此 Docker 实际上正在寻找路径./server/client/Dockerfile

我认为您的问题没有给出相对于您的上下文的路径:

services:
  server:
    build:
      context: ./server
      dockerfile: Dockerfile
于 2021-01-30T20:42:32.027 回答