2017-05-22 12 views
1

私は最近ドッカーを使い始めて、2つのコンテナを設定できました.pap7.0とapache2を実行し、もう1つは実行中のmysqlは、すべてがうまくいきました。今はshouchlがnginx、php5.6-fpm、php7.0-fpmを持っている新しいドッカーコンテナをセットアップしたいのですが、これは過去数時間のうちにこれを達成しようとしています。 **1つのドッカーコンテナに複数のPHPバージョンをインストールするには

私は1つの容器は、1つの責任を持つべきであることを知っているが、私は、私はphp5.6-FPMとphp7.1-の両方を必要とする状況で午前:以下は、私のDockerfile

FROM nginx:latest 
FROM php:php7.1-fpm 
FROM php:php5.6-fpm 
COPY ./src /var/www/html 
RUN apt-get update && apt-get install -y \ 
    nano \ 
    git \ 
    zip \ 
    mcrypt \ 
&& docker-php-ext-install mcrypt \ 
&& docker-php-ext-install pdo_mysql \ 
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 
&& docker-php-ext-install -j$(nproc) gd \ 
&& curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ 

** EDITですfpmが同時に動くように、私は3つのコンテナを作成することができます。すなわち、php7.1-fpmとnginxでphp5.6-fpmを実行すると、誰かが試してみるとphp5.6-fpmを実行しているconatainerのフォルダを探すようにnginxに指示しますhostone.devなどにアクセスする

+0

問題は何ですか? –

答えて

2

Dockerの主な哲学は、コンテナごとに1つのタスク(またはプロセス)を持つことです。詳細については、https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/を参照してください。

私はあなたが1つのコンテナであまりにも多くを実行しようとすることでDockerを最大限に活用しているかどうかは疑問です。 PHPとApacheを同じコ​​ンテナで実行するのは問題ありませんが(正式なイメージがあります!)、PHP FPMは独自のプロセスであるため、同じコンテナにnginxとPHP FPMを実行することをお勧めします。 。

第2に、複数のFROM機能を悪用していると思います。

https://docs.docker.com/engine/reference/builder/#from

から複数の画像を作成するために、単一のDockerfile内に複数回出現することができます。各新しいFROMコマンドの前に、コミットによって最後に出力されたイメージIDを書き留めるだけです。

FROMキーワードは、上に構築するベースイメージを指定します。単一のイメージを出力する場合は、単一のベースイメージを作成する必要があります。ベースイメージがphp:7.1-fpmの場合は、必要に応じて他のバージョンのPHPを手動でインストールする必要があります。彼らは多くの場所で葛藤するので、これは難しいかもしれません。 2つの別々のコンテナを使用するか、PHP 7でPHP 5コードを実行することを強くお勧めします。はほとんどと互換性があります。

+0

私の編集した質問を参照してください –

関連する問題