【发布时间】:2017-04-18 12:23:05
【问题描述】:
上下文
我正在为我们的 dev env 创建一个大型 Docker Compose。我们使用:
- nginx
- PHP
- MySQL
- MongoDB
为我们开发的网络应用提供服务。
我们还使用了一些使用 NodeJS 的命令行工具:
- Grunt(编译 SCSS)
- JSHint
所以我有一个docker-compose.yml 和五个Dockerfile(每个服务一个,一个包含 NodeJS)。建筑工程。
Docker 配置
docker-compose.yml
version: '2'
services:
web:
build: ../app-web/
ports:
- "80:80"
tty: true
# Add a volume to link php code on the host and inside the container
volumes:
- /var/www/my_app:/usr/share/nginx/html/my_app
- /var/www/my_app/docker_files/docker-assistant:/usr/share/nginx/html/assistant
# Add hostnames to allow devs to call special url to open sites
extra_hosts:
- "localhost:127.0.0.1"
- "assistant.docker:127.0.0.1"
- "my_app.my_company.dev:127.0.0.1"
depends_on:
- custom-php
- custom-mysql
- custom-mongo
- custom-node
links:
- custom-php:custom-php
- custom-mysql:custom-mysql
- custom-mongo:custom-mongo
custom-php:
build: ../app-php/
ports:
- "50:50"
volumes:
- /var/www/my_app:/usr/share/nginx/html/my_app
- /var/www/my_app/docker_files/docker-assistant:/usr/share/nginx/html/assistant
custom-mysql:
build: ../app-mysql/
#tty: true
volumes:
- /var/lib/mysql:/var/lib/mysql
- /var/www/my_app/sql:/usr/share/sql
environment:
- MYSQL_ROOT_PASSWORD=rootpwd
- MYSQL_DATABASE=appdb
- MYSQL_USER=app
- MYSQL_PASSWORD=apppwd
custom-mongo:
build: ../app-mongo/
volumes:
- /var/lib/mongodb:/data/db
custom-node:
build: ../app-npm/
tty: true
节点Dockerfile
FROM node:7.8.0-alpine
MAINTAINER DarckCrystale "xxx@xxx.xxx"
CMD [ "node" ]
问题
如何从 Docker 容器(例如 Grunt)运行 NodeJS 命令行工具?
例如,当我需要编译 SCSS,没有 Docker,我去我的 app 文件夹:
cd /var/www/my_app_folder
然后我咕噜咕噜地跑:
grunt
或
grunt watch
但我不知道如何使用我的节点 Docker 容器执行此操作。
【问题讨论】:
标签: node.js docker gruntjs docker-compose