这是我的项目结构
.
├── README.md
├── docker-compose.yml
└── frontend
├── Dockerfile
├── README.md
├── build
├── package.json
├── yarn.lock
└── ...
Docker-compose.yml
version: '3.7'
services:
frontend:
build:
context: frontend
dockerfile: Dockerfile
volumes:
- '.:/app'
- '/app/node_modules'
ports:
- 3000:3000
停靠文件
FROM node:14-alpine
WORKDIR /app
COPY ./package.json /app/package.json
RUN yarn install --no-lockfile
COPY . .
CMD ["yarn", "start"]
如果我使用docker构建容器,它可以正常工作。
但是docker-compose up --build
总是返回
Attaching to book-marketplace_frontend_1
frontend_1 | yarn run v1.22.15
frontend_1 | error Couldn't find a package.json file in "/app"
frontend_1 | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
book-marketplace_frontend_1 exited with code 1
奇怪的是,docker-compose仍然可以运行yarn install(需要package.json),但是以后却找不到它。希望有人能帮助我
3条答案
按热度按时间f0brbegy1#
因为 您 已经 在 workdir
app
中 , 正如 您 先前 定义 为WORKDIR
一样 。 所以 将 该行 更改 为 :COPY ./package.json /package.json
flvlnr442#
您的
volumes:
块将容器中的/app
目录替换为完全不同的内容。(您使用frontend
子目录作为构建上下文,但随后在/app
上绑定挂载.
;如果您使用docker-compose run frontend ls
,您将看到一个frontend
子目录,而不是您应用程序。)您可以通过删除
volumes:
块来解决这个问题。您的容器将运行内置到映像中的代码,而不是其他代码。js5cn81o3#
或者你可以改变docker-compose.yml中的行,对我来说很有用
至