Docker(docker-compose)に問題があります。 docker-compose.yml
を使用して、いくつかのPHP拡張機能をインストールしたいのですが、.ymlにはFROM ubuntu
ではなくFROM php
があるため、これを実行できません。 docker-php-ext-install
を達成またはアクセスする方法はありますか?
FROM ubuntu:16.04
RUN apt -yqq update
RUN apt -yqq install nginx iputils-ping
RUN docker-php-ext-install pdo pdo_mysql mbstring
WORKDIR /usr/local/src
COPY docker/nginx/dev.conf /etc/nginx/conf.d/dev.conf
COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
CMD ["nginx"]
version: "2"
services:
mariadb:
image: mariadb
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=1
- MYSQL_ROOT_PASSWORD=
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
restart: always
environment:
- PMA_Host=mariadb
links:
- mariadb
php:
image: php:7.1.1-fpm
ports:
- "9000:9000"
volumes:
- .:/dogopic
links:
- mariadb
nginx:
build: .
ports:
- "8000:80"
volumes:
- .:/dogopic
links:
- php
Step 5/9 : RUN docker-php-ext-install pdo pdo_mysql mbstring
---> Running in 445f8c82883d
/bin/sh: 1: docker-php-ext-install: not found
特定のサービス、この場合はphp
の新しいDockerfileを作成する必要があります。
php/Dockerfile
FROM php:7.1.1-fpm
RUN apt -yqq update
RUN apt -yqq install libxml2-dev
RUN docker-php-ext-install pdo_mysql
RUN docker-php-ext-install xml
そして、linkでdocker-compose.yml
ファイル、次のように:
services:
// other services
php:
build: ./php
ports:
- "9000:9000"
volumes:
- .:/dogopic
links:
- mariadb
build
パラメータを見てください-新しいDockerfileがあるディレクトリを指します。
私は問題を回避しました。私はまだこれを実行できることがわかったdocker-php-ext-install
スクリプトは次のコマンドを使用します。
docker-compose exec <your-php-container> docker-php-ext-install pdo pdo_mysql mbstring
利便性のために、この単純なバッチファイルを作成して、コンテナの構成を1つのコマンドに単純化しています:./docker.bat
@ECHO OFF
docker-compose build
docker-compose exec php docker-php-ext-install pdo pdo_mysql mbstring
docker-compose up
docker-php-ext-install
は、一部のネイティブdocker機能ではありません。 php docker hub pageを注意深く読むと、インストールプロセスを簡単にするために提供されている単なるスクリプトであることがわかります。
PHP拡張機能をより簡単にインストールするために、ヘルパースクリプト
docker-php-ext-configure
、docker-php-ext-install
、およびdocker-php-ext-enable
]を提供しています。
イメージがubuntu
ではなくphp
に基づいている場合、たとえば、 github にdocker-php-ext-install
があります。
ただし、Dockerfile
はFROM ubuntu
なので、apt-get
でphpをインストールすることをお勧めします。
FROM ubuntu:16.04
RUN apt -yqq update
RUN apt -yqq install nginx iputils-ping
RUN apt-get install -y php php-fpm pdo-mysql php-mbstring
Php-fpmを使用するようにnginx
を設定することを忘れないでください。そのために、私は個人的にstart.sh
スクリプトを使用します。このスクリプトは、コンテナでphp-fpm
とnginx
を開始します。
php-fpm -D
nginx -g "daemon off;"
そして、Dockerfile
でスクリプトを実行します。 nginx
ではありません:
COPY start.sh /tmp/start.sh
CMD ["/tmp/start.sh"]