2017-01-24 12 views
1

私はすでに自分の問題のアイデアを探しましたが、私が使用できるものは見つかりませんでした。 私は& Apache2のMySockでdockerfileを持っていますが、コンテナの起動時にも起動させたいのですが、CMDまたはENTRYPOINTでdockerfileで実行できません。tailを入れてコンテナを有効にしたいからです。 run -it container bashで直接bashモードに入ることができます。スクリプトにテールを入れたり、CMD/ENTRYPOINTを入力することは不可能です。コンテナの起動時にサービスを起動します

私はENTRYPOINTとスクリプトでのMySQL &のApache2を開始し、CMDtailを入れてみましたが、私はそれは不可能だと思う...

を私はupdate-rc.dと私のサービスを起動しようとしたが、それはまったく動作しません。 dockerfile貴様とスクリプトを試みる多くの後に...

ここに私のdockerfile:

### 
# Dockerfile db MySql 
### 

### 
# Image 
### 

FROM debian:jessie 

### 
# Volume 
### 

VOLUME /usr/projet/volumes/volume_db 

### 
# Proxy & installations 
### 

RUN export http_proxy="myproxy:port" \ 
&& export https_proxy="myproxy:port" \ 
&& apt-get update \ 
&& apt-get install -y vim \ 
&& echo "mysql-server mysql-server/root_password select root" | debconf-set-selections \ 
&& echo "mysql-server mysql-server/root_password_again select root" | debconf-set-selections \ 
&& apt-get install -y mysql-server \ 
&& apt-get install -y mysql-client \ 
&& service mysql start \ 
#&& service mysql stop \ 
&& echo "phpmyadmin phpmyadmin/dbconfig-install boolean true" | debconf-set-selections \ 
&& echo "phpmyadmin phpmyadmin/app-password-confirm password root" | debconf-set-selections \ 
&& echo "phpmyadmin phpmyadmin/mysql/admin-user string root" | debconf-set-selections \ 
&& echo "phpmyadmin phpmyadmin/mysql/admin-pass password root" | debconf-set-selections \ 
&& echo "phpmyadmin phpmyadmin/mysql/app-pass password root" | debconf-set-selections \ 
&& echo "phpmyadmin phpmyadmin/reconfigure-webserver multiselect apache2" | debconf-set-selections \ 
&& apt-get install -y phpmyadmin\ 
&& apt-get autoremove --purge 

### 
# Script startup 
### 

#COPY script_start /etc/init.d/ 

RUN update-rc.d apache2 defaults \ 
&& update-rc.d mysql defaults 

### 
# Variable env 
### 

ENV MYSQL_ROOT_PASSWORD=root 

### 

### 
# Port exposition & cmd 
### 

EXPOSE 3306 80 

CMD tail -F -n0 /etc/hosts 

そして、そこに私のスクリプト:

#!/bin/bash 

### BEGIN INIT INFO 
# Provides:   script_start 
# Required-Start: $local_fs $syslog 
# Required-Stop:  $local_fs $syslog 
# Default-Start:  2 
# Default-Stop: 
# Short-Description: Boot services mysql apache2 
# Description:  Boot services 
### END INIT INFO 

service mysql start \ 
&& service apache2 start 

私が欲しいものを理解し、あまりにも多くの言語ミス(fr)をしなかったことを願っています。

はあなたの助けをありがとう:)

答えて

0

あなたのパスにあなたを助けるかもしれないいくつかのポインタ -

  1. 同じ容器にMySQLとのApache2を使用するには、 コンテナのベストプラクティスに反しています。 2つのプロセスを別々のコンテナに分割し、それらをドッキング・コンポジションに接続することを検討してください。
  2. RUNを使用してサービスを開始すると、ビルド時に実行されますが、実際にコンテナを実行しても保持されないため、サービスがうまくいかないでしょう。 ENTRYPOINTは、スクリプトがコンテナの起動時に実行されていることを確認する必要があります。あなたが自分で容器に接続を許可する場合は
  3. 、あなたは
1

を私はすでに私の問題のためのアイデアを探してきましたが、私は、私が使用することができ、何も見つかりませんでした。

ほとんどの場合、1つのプロセスを1つのコンテナで実行する必要があります。アプリケーションを複数のコンテナに分割すると、水平に拡大してコンテナを再利用する方がはるかに簡単です。そのサービスが別のサービスに依存している場合は、コンテナのリンクを使用してください。

https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/run-only-one-process-per-container

0

感謝を(同じ画像から新しいコンテナを起動しようとする)docker run以上(実行中のコンテナ上でコマンドを実行)docker execを使用する必要がありますあなたの返答のために、私は気をつけて実行中に直接bashモードに入ることができたと思いました。runとは対照的に私のコンテナを変更できるようにするには、普通はdocker execを使用しなければならないと言っています。コンテナのみを展開するために使用する必要がありますか?

私はあなたのアドバイスでそれを行うつもりです、ありがとう! :D

関連する問題