【发布时间】:2015-04-30 04:40:40
【问题描述】:
我正在尝试在 Docker 多个容器上设置 Node.js 应用程序。 我的应用程序目前在一个 Ubuntu DO 液滴上并使用:
- Node.js (express 4)
- 应用数据库的mysql
- 用于键值存储的 redis
- nginx 用于负载平衡和提供静态文件。
我需要对不同的部分进行 dockerize,显然每个容器都有一个,然后使用 Docker-Compose(以前称为 Fig)来简单地描述不同的容器并设置它们之间的链接。
我对多容器方法不清楚。
一个用于 nginx
一个用于 Node.js 和我的 express 应用程序
一个用于 MySql
一个用于 Redis
Docker-compose.yml 会是什么样子? 我猜 nginx、mysql 和 redis 将是未经修改的官方图像? 虽然 node.js 将具有指向 Dockerfile 的构建指令,但会注意到它基于 node.js 官方图像以及配置说明? 例如,我将需要配置/提供 mysql 和 redis,这是否意味着每个都需要与自己的 Dockerfile 分开?
容器之间的链接方式是什么? 使用卷将文件复制到其中, 设置端口,调整hosts文件将some.domain.com映射到nginx ip?
然后我需要在全局范围内安装一些 npm 包,例如 nodemon 和 PM2 并设置一些 cron 作业...(在 Node.js 容器上?)
这是初稿,如果能帮助我更好地理解这个新设置,我将不胜感激:
Docker-compose.yml
nginx:
image: nginx
links:
- "node"
node:
build: .
volumes:
- "app:/src/app"
ports:
- "3030:3000"
links:
- "db:mysql"
db:
image: mysql:5.6
environment:
- MYSQL_ROOT_PASSWORD=mypassword
Dockerfile
FROM node:0.12
RUN mkdir /src
RUN npm install nodemon pm2 -g
WORKDIR /src
ADD app/package.json /src/package.json
RUN npm install
ADD app/nodemon.json /src/nodemon.json
EXPOSE 3000
CMD npm start
我使用这个simple project 作为基础,虽然我的应用需要
【问题讨论】:
标签: mysql node.js nginx docker fig