相关疑难解决方法(0)

Docker-compose:npm安装成功后,卷中没有node_modules

我有一个具有以下服务的应用程序:

  • web/ - 在端口5000上保存并运行python 3 flask Web服务器.使用sqlite3.
  • worker/- 有一个index.js文件,它是队列的工作者.Web服务器使用json API over port与此队列交互9730.工人使用redis进行存储.工作人员还将数据本地存储在文件夹中worker/images/

现在这个问题只涉及到了worker.

worker/Dockerfile

FROM node:0.12

WORKDIR /worker

COPY package.json /worker/
RUN npm install

COPY . /worker/
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

redis:
    image: redis
worker:
    build: ./worker
    command: npm start
    ports:
        - "9730:9730"
    volumes:
        - worker/:/worker/
    links:
        - redis
Run Code Online (Sandbox Code Playgroud)

当我运行时docker-compose build,一切都按预期工作,所有npm模块都/worker/node_modules按照我的预期安装.

npm WARN package.json unfold@1.0.0 No README data

> phantomjs@1.9.2-6 install /worker/node_modules/pageres/node_modules/screenshot-stream/node_modules/phantom-bridge/node_modules/phantomjs
> node install.js

<snip>
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时docker-compose up,我看到了这个错误:

worker_1 …
Run Code Online (Sandbox Code Playgroud)

node.js docker ubuntu-14.04 docker-compose

155
推荐指数
10
解决办法
7万
查看次数

return process.dlopen(module,path._makeLong(filename));

从OpenCV Node运行示例时出现此错误

  return process.dlopen(module, path._makeLong(filename));
                 ^

Error: /home/sunny/face/build/opencv/v5.0.0/Release/node-v46-linux-x64/opencv.node: undefined symbol: _ZNK2cv9Algorithm5writeERNS_11FileStorageE
    at Error (native)
    at Object.Module._extensions..node (module.js:460:18)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:313:12)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object. (/home/sunny/face/lib/bindings.js:4:15)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)

opencv node.js

12
推荐指数
2
解决办法
2万
查看次数

Docker - 安装卷后执行命令

我有一个基于官方[php][1]图像的php运行时的以下Dockerfile .

FROM php:fpm
WORKDIR /var/www/root/
RUN apt-get update && apt-get install -y \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
        zip \
        unzip \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install mysqli \
    && docker-php-ext-enable opcache \
    && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

11
推荐指数
2
解决办法
9148
查看次数

如何在安装卷时排除某些路径?

我想将所有内容挂载到当前目录中,除了/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

docker docker-compose

7
推荐指数
1
解决办法
4382
查看次数

docker如何处理多种挂载类型?

这个帖子有点lenglthy但是我忍受了一段时间......

假设您的应用程序位于/app具有以下结构的本地(主机)文件系统中

app
|-- index.php
|-- foo
|   `-- file-h1
`-- bar
    `-- file-h2
Run Code Online (Sandbox Code Playgroud)

现在假设我们有一个myrepo/app利用以下数据结构的图像(已标记)

opt
|-- app
|   `-- foo
|       `-- file-c1
Run Code Online (Sandbox Code Playgroud)

如果我们通过将主机安装/app到容器来运行该映像中的容器/opt/app,如下所示

docker container run \
-v /app:/opt/app \
myrepo/app
Run Code Online (Sandbox Code Playgroud)

容器的结果数据结构如下

opt
|-- app
|   |-- index.php
|   |-- foo       
|   |   `-- file-h1          
|   `-- bar
|       `-- file-h2 
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好...

运行具有多个安装的容器(绑定安装和卷)

现在,让我们说,我们想用这两个一个名为容积称为data被安装在/opt/app/vendor绑定贴装安装/app/opt/app

docker container run …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

7
推荐指数
1
解决办法
1789
查看次数

如何在 docker-compose 上挂载卷但保留映像中的现有子文件夹?

我有一个节点项目,并且我的 docker 映像已经安装了依赖项。

我想使用我的项目文件夹运行 docker-compose ,以便与容器的文件夹同步,这样我就可以编辑本地文件,并且它们应该在容器内更改。

但我想保留图像文件夹内的所有内容node_modules

我知道这个问题告诉我如何在安装卷时忽略子文件夹,但这会删除已安装的依赖项。

有没有办法挂载我的项目的文件夹但保留容器的子node_modules文件夹?

docker-compose

7
推荐指数
1
解决办法
2193
查看次数

使 docker-compose 忽略卷中的文件夹

我正在使用 docker-compose 进行 Rails 设置。为了同步文件,我安装了如下目录(省略了一些代码):

app:
    build: .
    command: rails server -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app
Run Code Online (Sandbox Code Playgroud)

但是,运行应用程序时,我不希望同步文件夹 tmp。将文件夹添加到 dockerignore 只能解决构建 docker 镜像时的问题。运行 docker compose 时,如何忽略主机和来宾之间同步的 tmp 文件夹?

docker docker-compose

6
推荐指数
1
解决办法
1万
查看次数

docker Composer install RunTimeException /var/www/html/vendor 不存在且无法创建

我有一个 Laravel 项目。这是我的docker-compose.yml文件。

nginx:
    build: ./nginx/
    ports:
        - 90002:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

composer:
    image: composer/composer
    volumes_from:
        - php
    working_dir: /var/www/html

app:
    image: php:7.0-fpm
    volumes:
        - ./test-api:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: test
        MYSQL_DATABASE: user
        MYSQL_USER: uesr
        MYSQL_PASSWORD: test

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 90003:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql …
Run Code Online (Sandbox Code Playgroud)

php docker-compose

5
推荐指数
1
解决办法
6005
查看次数

我在docker上执行npm install时出现问题

在与同事一起工作时,在执行npm安装时我遇到了以下问题,尽管我的同事都没有遇到同样的问题.我们都使用docker环境,linux容器.

这是错误:

npm install
npm WARN deprecated browserslist@2.11.3: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated browserslist@1.7.7: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
npm WARN deprecated socks@1.1.10: If using 2.x branch, please upgrade to at least 2.1.6 to avoid a serious bug with socket data flow and an import issue introduced in 2.1.0

> node-sass@4.9.3 install /var/www/node_modules/node-sass
> node scripts/install.js

fs.js:113
    throw err;
    ^

Error: …
Run Code Online (Sandbox Code Playgroud)

npm docker node-sass

5
推荐指数
1
解决办法
2882
查看次数

为什么 dotenv 没有加载到 docker 中,但在主机中运行良好?

我想构建一个将运行我的 node.js 应用程序的 Docker 映像。我正在使用dotenv npm 包来存储环境变量。它.env位于项目的根目录中。npm run start_in_docker当我运行从主机启动应用程序()的 npm 脚本时,一切都运行良好。但是,当我运行 Docker 容器时,出现以下错误:

internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'dotenv'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (/usr/src/app/src/server/main.js:3:1)
    at Module._compile (internal/modules/cjs/loader.js:701:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
    at Module.load (internal/modules/cjs/loader.js:600:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
    at Function.Module._load (internal/modules/cjs/loader.js:531:3) 
Run Code Online (Sandbox Code Playgroud)

这是我的 Dockerfile:

FROM node:10-alpine

# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json …
Run Code Online (Sandbox Code Playgroud)

environment-variables node.js docker npm-install dotenv

5
推荐指数
1
解决办法
1万
查看次数