2017-02-21 6 views
2

私はドッカーで正常に動作シナトラアプリがあります。ドッキング用コンテナにレディスを追加するには?

# Image 
FROM ruby:2.3.3 
RUN apt-get update && \ 
    apt-get install -y net-tools 


# Install app 
ENV APP_HOME /app 
ENV HOME /root 
RUN mkdir $APP_HOME 
WORKDIR $APP_HOME 
COPY Gemfile* $APP_HOME/ 
RUN bundle install 
COPY . $APP_HOME 


# Configure App 
ENV LANG en_US.UTF-8 
ENV RACK_ENV production 

EXPOSE 9292 


# run the application 
CMD ["bundle", "exec", "rackup"] 

をしかし、私はRedisのを追加しようとすると:

# Redis 
RUN   apt-get update && apt-get install -y redis-server 
EXPOSE  6379 
CMD   ["/usr/bin/redis-server"] 

のRedisが起動していないようです。

したがって、Ruby(FROM ruby:2.3.3)DockerコンテナにRedisを追加するにはどうすればよいでしょうか?

答えて

2

これを2つのコンテナに分割します。 docker-composeを使用すると、一般的なネットワーク上でそれらを呼び出すことができます。例えば。ここではサンプルのドッキングウィンドウ-compose.ymlです:

version: '2' 

services: 
    sinatraapp: 
    image: sinatraapp:latest 
    ports: 
    - 9292:9292 
    redis: 
    image: redis:latest 

以上ご使用の環境のためのより多くのオプションを含めると、自分のイメージ名がsinatraappであると想定することができます:最新、あなたが構築されたイメージにそれを変更します。 localhostではなく、redisをホスト名redisで呼び出すように、sinatraアプリケーションを更新する必要があります。次に、docker-compose up -dを実行して2つのサービスを開始します。

+0

はい、私はそれがこのようにする方が簡単でより良いことを見ました。 –

+0

今後の検索人にとっては、この場合は 'redis'キーは機能しません。 http://stackoverflow.com/a/42380642/336920を参照してください。 –

1

There can be only oneCMDあなたのDockerfileのコマンドです。さらにあなたがしたいことは、あなたが考えるよりもlittle more complexです。

P.S.上記はスタックオーバーフローリンクです。

+0

"Docker way"は2つのコンテナを持つように見えます。より簡単で簡単。 –

+0

重大な合併症がなければ、それは正しい、最も簡単な方法です。 – alkis

関連する問題