我知道之前已经有其他人在这里问过这个问题,但是,我已经通过了他们并尝试了这些建议。我相信这是一个复杂的问题,因为每个人的文件看起来都不同,并且基于位置和路径而有所不同,我在 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"]