2017-04-18 10 views
0

開発のためのドッカー画像を作成します。画像を実行するときに自動的にmysqlとapacheを起動します。Docker:エントリーポイントまたはCMDからmysqlとapacheを起動する

私がコンテナにログインして「service apache2 start」と「service mysql start」を実行すると動作します。しかし、私がエントリーポイントやCMDを入れると失敗します。 ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]を入れてApacheを起動できましたが、プログラムでmysqlを起動できませんでした。

私は多くのことを試しました。 docker:デーモンからのエラー応答:ociランタイムエラー:container_linux.go:247:コンテナプロセスの開始によって "exec:\"/etc/initが発生しました。 .D/mysqlの開始\「:statに起動しない/etc/init.d/mysql:そのようなファイルやディレクトリを」これは私がこれまで持っているものである

FROM debian:wheezy 

RUN apt-get update && \ 
    apt-get install -y libmcrypt-dev \ 
    subversion ssl-cert nano wget unzip && \ 
    echo "deb http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources.list.d/dotdeb.list && \ 
    echo "deb-src http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources.list.d/dotdeb.list && \ 
    wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add - && \ 
    echo mysql-server-5.5 mysql-server/root_password password yourpass | debconf-set-selections && \ 
    echo mysql-server-5.5 mysql-server/root_password_again password yourpass | debconf-set-selections && \ 
    apt-get update && \ 
    apt-get install -y \ 
    apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5 \ 
    openssl php-pear php5 php5-cli php5-common php5-curl php5-gd php5-mcrypt php5-mysql php5-memcache php5-readline \ 
    subversion ssl-cert nano wget unzip \ 
    mysql-server-5.5 mysql-client mysql-client-5.5 mysql-common && \ 
    /etc/init.d/mysql start && \ 
    mysql -u root -pyourpass -e "create database mydb;" && \ 
    rm -rf /var/lib/apt/lists/* && \ 
    rm /etc/apache2/sites-enabled/000-default && \ 
    mkdir -p /var/www/html && \ 
    chown www-data:www-data -R /var/www/html/ 

COPY conf/etc/ /etc/ 
COPY mydump.sql /var/www/html/mydump.sql 

RUN /etc/init.d/mysql start && \ 
    mysql -u root -pyourpass -h localhost mydb < /var/www/html/mydump.sql && \ 
    rm /var/www/html/mydump.sql 

VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2", "/var/lib/mysql"] 

EXPOSE 80 443 3306 
+0

エラーが発生して失敗しますか? –

+0

docker:デーモンからのエラー応答:ociランタイムエラー:container_linux.go:247:コンテナプロセスの開始によって「exec:\」/ etc/init.d/mysql start \ "が発生しました:stat /etc/init.d/mysql start:そのようなファイルやディレクトリはありません " –

答えて

1

しばしば見られるモデルがにありますDockerイメージにスクリプト(bash、shellなど)を含め、そのスクリプトをアプリケーションのエントリポイントとして使用します。 https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#entrypoint

docker-entrypoint.shスクリプトに入れて、スクリプトをCOPYし、ENTRYPOINTから参照してください。

+1

あなたはスクリプトに何を入れますか?どのようにドッカーファイルから呼び出すのですか? –

+0

これは私がやったことです。 –

1

のApacheやMySQLのいずれかを開始するあなたの方法は、私がhub.docker.com上で最も人気のApacheを見ればDockerfile Apacheを起動する方法を示し

私に間違って見えます。 Dockerfileの最後の行が参照MySQLの

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 

で、Dockerfileの最後の行は、あなたが順番にsupervisorまたはS6またはdaemontoolsのような他の同様のツールで見ることができ

CMD ["mysqld"] 

ですApacheとMysqlの両方をDockerの方法で起動します。

+0

[s6-overlay](https://github.com/just-containers/s6-overlay)プロジェクトは、s6コンテナのセットアップをより簡単にします。 – Matt

+0

あなたがしたことはうまくいきます。 – user2915097

+0

Apacheのコマンドは動作しますが、mysqlは動作しません。また、私は両方の作業を開始しようとしています。作業中のLAMPサーバー –

関連する問題