有没有办法完全重置 docker-compose 服务? 因为我不能再使用 npm 了

问题描述

我在 Docker 上使用 Symfony ApiPlatform 2.5,为 ReactJs 前端提供“客户端”服务。我真的不知道发生了什么,但是我不能用 npm 做更多事情,总是会出现这个错误

npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR!     <https://npm.community>

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2021-04-04T09_55_47_791Z-debug.log

然后我尝试了“npm install --no-package-lock”,得到这个错误

npm ERR! code EBUSY
npm ERR! syscall rmdir
npm ERR! path /usr/src/client/node_modules/.webpack-dev-server.DELETE/ssl
npm ERR! errno -16
npm ERR! EBUSY: resource busy or locked,rmdir '/usr/src/client/node_modules/.webpack-dev-server.DELETE/ssl'

当我尝试在容器上运行“rm -rf node_modules”时,我遇到了同样的错误

rm: can't remove 'node_modules/.webpack-dev-server.DELETE/ssl': Resource busy

这里是 docker-compose 部分:

client:
    build:
      context: ./client
      target: api_platform_client_development
      cache_from:
        - ${CLIENT_IMAGE:-quay.io/api-platform/client}
    image: ${CLIENT_IMAGE:-quay.io/api-platform/client}
    tty: true # https://github.com/facebook/create-react-app/issues/8688
    environment:
      - API_PLATFORM_CLIENT_GENERATOR_ENTRYPOINT=http://api
      - API_PLATFORM_CLIENT_GENERATOR_OUTPUT=src
    depends_on:
      - dev-tls
    volumes:
      - ./client:/usr/src/client:rw,cached
      - dev-certs:/usr/src/client/node_modules/webpack-dev-server/ssl:rw,nocopy
    ports:
      - target: 3000
        published: 443
        protocol: tcp

以及相关的 Dockerfile :

# https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage
# https://docs.docker.com/compose/compose-file/#target


# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG NODE_VERSION=13
ARG Nginx_VERSION=1.17


# "development" stage
FROM node:${NODE_VERSION}-alpine AS api_platform_client_development

workdir /usr/src/client

RUN yarn global add @api-platform/client-generator

RUN apk --no-cache --virtual build-dependencies add \
  python \
  make \
  build-base

# prevent the reinstallation of node modules at every changes in the source code
copY package.json yarn.lock ./
RUN set -eux; \
  yarn install

copY . ./

VOLUME /usr/src/client/node_modules

ENV HTTPS true

CMD ["yarn","start"]


# "build" stage
# depends on the "development" stage above
FROM api_platform_client_development AS api_platform_client_build

ARG REACT_APP_API_ENTRYPOINT

RUN set -eux; \
  yarn build


# "Nginx" stage
# depends on the "build" stage above
FROM Nginx:${Nginx_VERSION}-alpine AS api_platform_client_Nginx

copY docker/Nginx/conf.d/default.conf /etc/Nginx/conf.d/default.conf

workdir /usr/src/client/build

copY --from=api_platform_client_build /usr/src/client/build ./

有没有办法完全重置(即:全新安装)这个服务,而不影响其他服务?我知道我们可以使用选项删除所有卷,但没有找到如何仅对一项服务采取行动。我有一个服务的数据库,我不想丢失。 :/

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)