我有一个具有以下服务的应用程序:
web/ - 在端口5000上保存并运行python 3 flask Web服务器.使用sqlite3.worker/- 有一个index.js文件,它是队列的工作者.Web服务器使用json API over port与此队列交互9730.工人使用redis进行存储.工作人员还将数据本地存储在文件夹中worker/images/现在这个问题只涉及到了worker.
worker/DockerfileFROM node:0.12
WORKDIR /worker
COPY package.json /worker/
RUN npm install
COPY . /worker/
Run Code Online (Sandbox Code Playgroud)
docker-compose.ymlredis:
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) 从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)
我有一个基于官方[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) 我想将所有内容挂载到当前目录中,除了/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?
这个帖子有点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 ,以便与容器的文件夹同步,这样我就可以编辑本地文件,并且它们应该在容器内更改。
但我想保留图像文件夹内的所有内容node_modules。
我知道这个问题告诉我如何在安装卷时忽略子文件夹,但这会删除已安装的依赖项。
有没有办法挂载我的项目的文件夹但保留容器的子node_modules文件夹?
我正在使用 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 文件夹?
我有一个 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) 在与同事一起工作时,在执行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) 我想构建一个将运行我的 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) docker ×7
node.js ×3
dockerfile ×1
dotenv ×1
node-sass ×1
npm ×1
npm-install ×1
opencv ×1
php ×1
ubuntu-14.04 ×1