Aug*_*ger 12 mongodb node.js docker docker-compose
我不能让我的码头工作.
这是我的dockerfile:
FROM node:0.12
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD . /myapp
RUN npm install
Run Code Online (Sandbox Code Playgroud)
我的docker-compose.yml
db:
image: mongo
ports:
- 27017
web:
build: .
command: npm start
volumes:
- .:/myapp
ports:
- 3000:3000
links:
- db
environment:
PORT: 3000
Run Code Online (Sandbox Code Playgroud)
在server.js中:
var MONGO_DB;
var DOCKER_DB = process.env.DB_1_PORT;
if ( DOCKER_DB ) {
MONGO_DB = DOCKER_DB.replace( "tcp", "mongodb" ) + "/dev_db";
} else {
MONGO_DB = process.env.MONGODB;
}
mongoose.connect(MONGO_DB);
Run Code Online (Sandbox Code Playgroud)
从此repo重复:https://github.com/projectweekend/Node-Backend-Seed
但是process.env.DB_1_PORT
为空.我该如何添加它?
谢谢
Aug*_*ger 24
对不起@ gettho.child,我太快接受了你的回答.我认为它有效,但事实并非如此.我将在这里报告我的最终解决方案,因为我一直在努力实现它.
Dockerfile
:
FROM node:0.12
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev libkrb5-dev
RUN mkdir /myapp
WORKDIR /myapp
ADD package.json /myapp/package.json
RUN npm install
ADD . /myapp
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
:
db:
image: mongo
ports:
- "27017:27017"
command: "--smallfiles --logpath=/dev/null"
web:
build: .
command: node app.js
volumes:
- .:/myapp
ports:
- "3000:3000"
links:
- db
environment:
PORT: 3000 # this is optional, allows express to use process.env.PORT instead of a raw 3000
Run Code Online (Sandbox Code Playgroud)
而有趣的app.js提取:
var MONGO_DB;
var DOCKER_DB = process.env.DB_PORT;
if ( DOCKER_DB ) {
MONGO_DB = DOCKER_DB.replace( 'tcp', 'mongodb' ) + '/myapp';
} else {
MONGO_DB = process.env.MONGODB;
}
var retry = 0;
mongoose.connect(MONGO_DB);
app.listen(process.env.PORT || 3000);
Run Code Online (Sandbox Code Playgroud)
关于process.env.DB_PORT
我已经尝试了很多东西.如果它没有开箱即用,我建议console.log(process.env);
并寻找mongo的IP.
最终的URL应如下所示: mongodb://172.17.0.76:27017/myapp
祝你好运,值得拥有,Docker真棒!
编辑:
如果上述工作正常,我现在通过运行以下方法找到了与技术无关的工作流程:
docker-compose run web /bin/bash
printenv
我希望这不是太多的自我推销,但我写了一篇关于这个主题的双重文章,可能会对一些读者有所帮助:https://augustin-riedinger.fr/en/resources/using-docker-as-a-development-环境部分-1 /
干杯
由于我们使用docker-compose.yml
和 来实现可靠的连接 Web 服务db
(在本例中为 mondoDB),最终的MONGO_DB
连接字符串应如下所示(无需授权和附加参数):
mongodb://db:27017/myapp
Run Code Online (Sandbox Code Playgroud)
在哪里:
更多请看这里
归档时间: |
|
查看次数: |
18716 次 |
最近记录: |