我有一个docker-compose.yml包含4个容器的文件:redis,postgres,api,worker
在开发worker期间,我经常需要重新启动它才能应用更改.有没有什么好方法可以重新启动容器(例如worker)而无需重新启动其他容器?
我不能npm install在NodeJS中使用命令提示符.我在运行时遇到这些错误npm install:
module.js:339
throw err;
^
Error: Cannot find module 'semver'
at Function.Module._resolveFilename (module.js:337:15)
at Function.Module._load (module.js:287:25)
at Module.require (module.js:366:17)
at require (module.js:385:17)
at Object.<anonymous> (C:\Users\admin\AppData\Roaming\npm\node_modules\npm\l
ib\config\defaults.js:6:14)
at Module._compile (module.js:435:26)
at Object.Module._extensions..js (module.js:442:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:311:12)
at Module.require (module.js:366:17)
Run Code Online (Sandbox Code Playgroud)
请帮我
假设我的主机上有一个Docker容器和一个文件夹/hostFolder.现在,如果我要对这个文件夹添加到多克尔容器的体积,那么我可以通过使用这样做ADD在Dockerfile或安装它作为一个音量.
到现在为止还挺好.
现在/hostFolder包含一个子文件夹/hostFolder/subFolder.
我想挂载/hostFolder到泊坞容器(无论是读写或只读并不重要,无论是对我的作品),但我不希望把它列入/hostFolder/subFolder.我想排除这个,我也希望Docker容器能够对这个子文件夹进行更改,而不会在主机上更改它.
这可能吗?如果是这样,怎么样?
有没有办法将应用程序中的node_modules目录移动到bowerrc文件中,像bower那样/ vendor/node_modules?我认为它可以在package.json中指定,但我似乎无法找到解决方案.非常感谢您的帮助.
我有在node_modulesDocker容器内安装并与主机同步的问题.我的Docker的版本是18.03.1-ce, build 9ee9f40和Docker Compose的版本一样1.21.2, build a133471.
我docker-compose.yml看起来像:
# Frontend Container.
frontend:
build: ./app/frontend
volumes:
- ./app/frontend:/usr/src/app
- frontend-node-modules:/usr/src/app/node_modules
ports:
- 3000:3000
environment:
NODE_ENV: ${ENV}
command: npm start
# Define all the external volumes.
volumes:
frontend-node-modules: ~
Run Code Online (Sandbox Code Playgroud)
我的Dockerfile:
# Set the base image.
FROM node:10
# Create and define the working directory.
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
# Install the application's dependencies.
COPY package.json ./
COPY package-lock.json ./
RUN npm install …Run Code Online (Sandbox Code Playgroud) 我很抱歉我的新手问题,但是我正在度过这个错误的可怕日子,我有一个Express应用程序,我试图在docker compose中运行它.我用过这个Dockerfile:
FROM mhart/alpine-node
RUN mkdir -p /usr/src/app
RUN chmod -R 777 /usr/src/app
WORKDIR /usr/src/app
RUN npm install node-gyp -g
RUN npm install nodemon -g
ENV NODE_ENV development
EXPOSE 3000
Run Code Online (Sandbox Code Playgroud)
这部分我的docker-compose文件:
backend:
mem_limit: 100m
build:
context: .
dockerfile: dockerfiles/node/Dockerfile
command: npm start
depends_on:
- mongo
- elasticsearch
volumes:
- ./backend/:/usr/src/app
ports:
- 3000:3000
links:
- "mongo:mongo"
- "elasticsearch:elasticsearch"
Run Code Online (Sandbox Code Playgroud)
当我做docker-compose时,我收到这个错误:
backend_1 | npm info it worked if it ends with ok
backend_1 | npm info using npm@3.10.10
backend_1 | npm info …Run Code Online (Sandbox Code Playgroud) 我想将所有内容挂载到当前目录中,除了/node_modules和/client/bower_components.我目前必须手动挂载所有路径,如下所示:
app:
build: .
ports:
- "3000:3000"
- "35729:35729"
links:
- mongo
volumes:
- client/app:/www/app/client/app
- client/assets:/www/app/client/assets
- client/components:/www/app/client/components
- server:/www/app/server
...
mongo:
image: mongo
ports:
- "27017:27017"
Run Code Online (Sandbox Code Playgroud)
有什么方法我可以排除一些路径,例如!client/bower_components和!node_modules?
我们想开始容器化我们的应用程序,但是偶然发现了本地依赖项的一些问题。
我们只有一个git存储库,其中在“共享”文件夹下有许多节点程序包,以及需要这些程序包的应用程序。
所以说我们的文件夹结构如下:
src/
??? apps
? ??? my_app
??? shared
??? shared_module
Run Code Online (Sandbox Code Playgroud)
在my_app package.json中,我们具有以下依赖关系:
{
"dependencies": {
"shared-module": "file:../../shared/shared_module"
}
}
Run Code Online (Sandbox Code Playgroud)
这里的问题是,因为我们要移动“ my_app”在容器中运行,所以需要npm安装我们的本地依赖项。
能做到吗?
我想使用Docker为一个简单的node.js项目创建开发环境。我想将项目的依赖项(它们都是npm软件包)安装在docker容器内(这样它们就不会碰到我的主机),并且仍然使用卷挂载我的代码。因此,容器应该能够node_modules在安装卷的路径中找到该文件夹,但是我不应该从主机上看到它。
这是我的Dockerfile:
FROM node:6
RUN mkdir /code
COPY package.json /code/package.json
WORKDIR /code
RUN npm install
Run Code Online (Sandbox Code Playgroud)
这是我的运行方式:
docker build --tag my-dev-env .
docker run --rm --interactive --tty --volume $(pwd):/code my-dev-env npm test
Run Code Online (Sandbox Code Playgroud)
这是我的package.json:
{
"private": true,
"name": "my-project",
"version": "0.0.0",
"description": "My project",
"scripts": {
"test": "jasmine"
},
"devDependencies": {
"jasmine": "2.4"
},
"license": "MIT"
}
Run Code Online (Sandbox Code Playgroud)
它失败了,因为它找不到jasmine,因此它并不是真正的安装它:
> jasmine
sh: 1: jasmine: not found
Run Code Online (Sandbox Code Playgroud)
Docker可以实现我想要的功能吗?一种替代方法是全局安装软件包。我也试图npm install -g无济于事。
我使用的是Docker 1.12.1版本的Debian,版本23cf638。
development-environment dependency-management node.js npm docker