我们已经使用docker-compose一年了,我们没有遇到任何问题。在过去的一周中,我们每个人都开始遇到一个与权限有关的奇怪错误
位于internal/main/run_main_module.js:17:47:错误:eperm:操作不允许,打开
只有我换树枝的时候才会发生
组成结构:
version: "2.4"
# template:
x-base: &base-service-template
env_file:
- ./.env
working_dir: /app/
volumes:
- ./src:/app/src:cached
services:
service1:
image: service1
<<: *base-service-template
service2:
image: service2
<<: *base-service-template
我们都在做OSX。我们尝试在文件系统上授予docker权限,但仍然不起作用。
但有些东西是有效的。正在重新启动后台进程。但我不想在每次切换分支时重新启动守护进程
其他信息:
每个服务的docker文件库如下所示
FROM node:12-alpine as builder
ENV TZ=Europe/London
RUN npm i npm@latest -g
RUN mkdir /app && chown node:node /app
WORKDIR /app
RUN apk add --no-cache python3 make g++ tini \
&& apk add --update tzdata
USER node
COPY package*.json ./
RUN npm install --no-optional && npm cache clean --force
ENV PATH /app/node_modules/.bin:$PATH
COPY . .
FROM builder as dev
USER node
CMD ["nodemon", "src/services/service/service.js"]
FROM builder as prod
USER node
ENTRYPOINT ["/sbin/tini", "--"]
CMD ["node", "src/services/service/service.js"]
我在dev层运行,这样我们就可以利用nodemon代码重新加载。
docker版本:docker版本19.03.13,build 4484C46D9D
docker-compose版本:docker-compose版本1.27.4,版本40524192
所以在尝试了一些奇怪的东西之后,答案很简单。
完成此操作后:
记住重新启动运行compose的shell。