私はDocker、Ghost、およびノードに本当に慣れていないので、ここで露骨な無知を許してください。
イメージに基づいて Ghost 用の Docker イメージ/コンテナーをセットアップしようとしてgoogle/nodejs-runtime
いますが、Docker 経由で実行するとサーバーに接続できません。
いくつかの詳細: 私は OS X を使用しているので、I'm boot2docker を使用しています。ポート 8080 を使用するように構成された npm モジュールとして Ghost を実行していますgoogle/nodejs-runtime
。を使用すると、この構成は Docker の外部で正常に動作しますnpm start
。また、ポート 8080 で Docker 内から動作する単純な "Hello, World" Express アプリも試しました。
私のディレクトリ構造は次のようになります。
- my_app
- コンテンツ/
- Dockerfile
- ghost_config.js
- パッケージ.json
- サーバー.js
package.json
{
"name": "my_app",
"private": true,
"dependencies": {
"ghost": "0.5.2",
"express": "3.x"
}
}
Dockerfile
FROM google/nodejs-runtime
ghost_config.js
ポート 2368 をすべて 8080 に変更しました。
server.js
// This Ghost server works with npm start, but not with Docker
var ghost = require('ghost');
var path = require('path');
ghost({
config: path.join(__dirname, 'ghost_config.js')
}).then(function (ghostServer) {
ghostServer.start();
});
// This "Hello World" app works in Docker
// var express = require('express');
// var app = express();
// app.get('/', function(req, res) {
// res.send('Hello World');
// });
// var server = app.listen(8080, function() {
// console.log('Listening on port %d', server.address().port);
// });
で Docker イメージをビルドしdocker build -t my_app .
、 で実行するとdocker run -p 8080 my_app
、コンソールに次のように出力されます。
> my_app@ start /app
> node server.js
Migrations: Up to date at version 003
Ghost is running in development...
Listening on 127.0.0.1:8080
Url configured as: http://localhost:8080
Ctrl+C to shut down
docker ps
出力:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f4c7027f62f my_app:latest "/nodejs/bin/npm sta 23 hours ago Up About a minute 0.0.0.0:49165->8080/tcp pensive_lovelace
そしてboot2docker ip
出力:
The VM's Host only interface IP address is: 192.168.59.103
ブラウザで 192.168.59.103:49165 を指定すると、Docker ログに何も出力されません。上で述べたように、「Hello World」アプリを同じように実行するとserver.js
問題なく動作します。
私にはすべてが正しいように見えます。私が見る唯一の奇妙なことは、sqlite3が次のnpm install
中に失敗することですdocker build
:
[sqlite3] Command failed:
module.js:356
Module._extensions[extension](this, filename);
^
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found
...
node-pre-gyp ERR! Testing pre-built binary failed, attempting to source compile
しかし、ソースのコンパイルは問題なく成功しているようです。
ここでばかげたことをしているだけだといいのですが。