2017-02-20 11 views
0

ドッカーでRailsイメージを構築しましたが、Dockerfileを使用してpassengerを設定する方法がわかりません。今Dockerfileが自動的に旅客機をRailsで起動する

Dockerfileは今、私が最初にコンテナを実行し、このようpassengerコマンドを実行する必要が

FROM username/my_app:latest 
WORKDIR /my_app 
# Expose port 3000 to the Docker host, so we can access it from the outside. 
EXPOSE 3000 

です。

docker run -it -p 4321:3000 \ 
--name my_app \ 
username/my_app 

そして、最後に

docker exec -itd my_app /bin/bash -c -l "whenever -iw" 
docker exec -it my_app /bin/bash -c -l "passenger start" 

を入力して、私はhttp://localhost:4321

に私のアプリにアクセスすることができます私は自動的に私のアプリを起動してpassenger startをオンにするdocker run ....を使用することができます方法はありますか?

私はこれを試しましたが、うまくいかないようです。

FROM username/my_app:latest 
WORKDIR /my_app 
RUN whenever -iw 
RUN passenger start 
# Expose port 3000 to the Docker host, so we can access it from the outside. 
EXPOSE 3000 

答えて

0

ENTRYPOINTを使用すると、コンテナの起動後にコマンドを実行できます。リンクの下に参照してくださいENTRYPOINTについての詳細情報については

FROM username/my_app:latest 
WORKDIR /my_app 
# Expose port 3000 to the Docker host, so we can access it from the outside. 
EXPOSE 3000 
ENTRYPOINT ["whenever -iw && passenger start "] 

Dockerfile Entrypoint documentation

+0

これは、ドッキングウィンドウを投げる: 'デーモンからのエラー応答:OCIランタイムエラー:container_linux.go:247:コンテナ・プロセスを開始するには「のexec原因: "いつでも-iw &&乗客が起動する":$ PATHに実行ファイルが見つかりません "。 –

+0

'いつでも 'パッケージがインストールされていないか、コマンドパスを見つけることができません。最初に手動でコンテナを起動し、両方のコマンドが正しいかどうかチェックしてください。 'いつでも-iw && passenger start 'のように実行したり、これらのバイナリパスを検出していない/ bin/shシェルを使用してもかまいません。両方のコマンドが一緒に実行されていない場合、別々に作業してシェルスクリプトファイルを作成し、これら2つのコマンドをスクリプトに追加し、このスクリプトをドッカーファイルに追加します。エントリポイントファイルにスクリプトパスを指定します。 –

+0

ありがとう、私はそれを試してみます。 –

関連する問題