E. *_*des 3 ruby sinatra mongodb docker docker-compose
你能告诉我我的 Dockerfile 或 docker-compose 有什么问题吗?
# Dockerfile
FROM ruby:2.5.0
RUN apt-get update -qq && apt-get install -y build-essential
ENV APP_HOME /app
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
ADD Gemfile* $APP_HOME/
RUN bundle install
ADD . $APP_HOME
# docker-compose.yml
version: '3'
services:
db:
image: mongo
volumes:
- $HOME/data/mongodb:/data/db
ports:
- "27017:27017"
web:
build: .
command: rackup config.ru --port 4567
volumes:
- .:/app
ports:
- "4567:4567"
depends_on:
- db
Run Code Online (Sandbox Code Playgroud)
如果我直接使用“rackup”命令运行应用程序,它效果很好。当我通过“docker-compose up”命令运行容器时,问题就开始了,它停止通过“localhost:4567”接受请求。我无法发现问题,这就是我寻求帮助的原因。
这是来自“docker-compose up”的日志,以防万一。
Starting tracker_db_1 ... done
Recreating tracker_api_1 ... done
Attaching to tracker_db_1, tracker_api_1
db_1 | 2018-07-30T09:43:17.580+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=fe12227a1143
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] db version v4.0.0
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] git version: 3b07af3d4f471ae89e8186d33bbb1d5259597d51
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] allocator: tcmalloc
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] modules: none
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] build environment:
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] distmod: ubuntu1604
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] distarch: x86_64
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] target_arch: x86_64
db_1 | 2018-07-30T09:43:17.669+0000 I CONTROL [initandlisten] options: { net: { bindIpAll: true } }
db_1 | 2018-07-30T09:43:17.686+0000 I STORAGE [initandlisten] Detected data files in /data/db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
db_1 | 2018-07-30T09:43:17.700+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=487M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress),
web_1 | [2018-07-30 09:43:19] INFO WEBrick 1.4.2
web_1 | [2018-07-30 09:43:19] INFO ruby 2.5.0 (2017-12-25) [x86_64-linux]
web_1 | [2018-07-30 09:43:19] INFO WEBrick::HTTPServer#start: pid=1 port=4567
db_1 | 2018-07-30T09:43:29.033+0000 I STORAGE [initandlisten] WiredTiger message [1532943809:33683][1:0x7f429bbb8a00], txn-recover: Main recovery loop: starting at 7/8576
db_1 | 2018-07-30T09:43:29.787+0000 I STORAGE [initandlisten] WiredTiger message [1532943809:787811][1:0x7f429bbb8a00], txn-recover: Recovering log 7 through 8
db_1 | 2018-07-30T09:43:30.362+0000 I STORAGE [initandlisten] WiredTiger message [1532943810:362900][1:0x7f429bbb8a00], txn-recover: Recovering log 8 through 8
db_1 | 2018-07-30T09:43:30.433+0000 I STORAGE [initandlisten] WiredTiger message [1532943810:433423][1:0x7f429bbb8a00], txn-recover: Set global recovery timestamp: 0
db_1 | 2018-07-30T09:43:30.463+0000 I RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
db_1 | 2018-07-30T09:43:30.487+0000 I CONTROL [initandlisten]
db_1 | 2018-07-30T09:43:30.488+0000 I CONTROL [initandlisten] ** WARNING: Access control is not enabled for the database.
db_1 | 2018-07-30T09:43:30.488+0000 I CONTROL [initandlisten] ** Read and write access to data and configuration is unrestricted.
db_1 | 2018-07-30T09:43:30.488+0000 I CONTROL [initandlisten]
db_1 | 2018-07-30T09:43:30.635+0000 I FTDC [initandlisten] Initializing full-time diagnostic data capture with directory '/data/db/diagnostic.data'
db_1 | 2018-07-30T09:43:30.642+0000 I NETWORK [initandlisten] waiting for connections on port 27017
Run Code Online (Sandbox Code Playgroud)
您的应用程序在本地主机之外不可用,并且其本地主机是 docker 容器,而不是您的系统(您甚至可以尝试从容器内部卷曲本地主机,我打赌它会正常工作)。我无法向您提供更多细节,我对这个话题并不擅长。但你需要做的只是将rack绑定到0.0.0.0。
例如,我这样运行我的 Rails 应用程序:
bundle exec rails s -p 3000 -b 0.0.0.0
在你的情况下它将是:
rackup --host 0.0.0.0 --port ...
现在甚至可以通过您的网络使用它(至少应该如此)
| 归档时间: |
|
| 查看次数: |
589 次 |
| 最近记录: |