Dockerfileからphp用のコンテナを作ってます。
phpの色々インストールはRUNで出来ると思うのですが、php.iniの置き換えがいまいちどんな感じでやるのが良いのかわかりません。
正規表現でいちいち変えるのも手間だと思うので、最終系のphp.iniを保存して、そのファイルに置き換えるって感じでしょうか…?
Docker初心者なのでもしよろしければDockerfileをそのまま見せて頂けると嬉しいですm(__)m
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
Apache+php(とmysqlコンテナーをつなぐ)のimageで使ってるのを貼っておきます
内容確認してみてください
Dockerfileと同じ場所にapache2.confとphp.iniを用意しています
text
1FROM php:7.1-apache 2RUN a2enmod rewrite 3RUN apt-get update \ 4 && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libjpeg-dev libmcrypt-dev \ 5 && docker-php-ext-install pdo_mysql mysqli mbstring iconv mcrypt \ 6 && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ 7 && docker-php-ext-install -j$(nproc) gd 8COPY apache2.conf /etc/apache2/ 9COPY php.ini /usr/local/etc/php/ 10RUN usermod -u 1000 www-data && groupmod -g 1000 www-data
もしくは、php.iniをsedコマンドで書き換えるよう、Dockerfileに書くのもありです
開発用であれば、最近はphp.iniは、ローカル側にマウントして書き換えたりしてます
手元にphp.iniを用意して
$ docker run -v php.ini:/usr/local/etc/php/php.ini php:7.1-apache
とかしてあげると、手元のphp.iniがコンテナ内で参照されるので、
Dockerfile内でphp.iniを含める必要ないです
投稿2017/03/24 06:19
総合スコア105
0
自分はインストールされるバージョンのphp.iniを書き換えたもので置き換える方法を取っています。
Dockerfile内では以下のような感じです。
COPY my-php.ini /etc/php.ini
投稿2017/03/16 14:21
編集2017/03/16 14:22総合スコア81
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
正規表現でいちいち変えるのも手間だと思うので、最終系のphp.iniを保存して、そのファイルに置き換えるって感じでしょうか…?
php のバージョンが変わって、行がずれたときとかのことを考えて、patch コマンドを使うというのが良いかもしれません。
しかし、Dockerfile だと所詮 RUN コマンドでシェル起動になってしまいます。もう少し、高レベルなプロビジョニング(OSにいろいろなものをインストールしたり設定したりすること)言語を使うというのが別案になります。たとえば、 ansible などを使えば、パッチをあてる、データベースを設定するなど、高レベルで書けるので、可読性や汎用性が向上すると思います。ansible の playbook は Docker コンテナ以外のVPSや仮想化サーバに利用できますが、Dockerfile では Docker コンテナしか作れません。
投稿2017/03/06 09:27
総合スコア3401
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。