【发布时间】:2021-10-11 22:56:38
【问题描述】:
编辑:对于任何想要获得带有扩展的 PHP 容器的人,我发现最好的解决方案是使用 script to install the extensions. 就像一个魅力。
这是我使用的具体 dockerfile:
FROM php:8.1.0RC3-apache-buster
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions sqlsrv pdo_sqlsrv pdo_mysql
我有一个安装了 SQL 服务器扩展的现有容器,因此我正在尝试从中创建一个新容器。这是 docker-compose:
version: '3.1'
services:
MageAPIDev:
container_name: MageAPIDev
image: mc_test:v2
ports:
- 200:80
volumes:
- ./src:/var/www/html/
- .app:/var/app/
command: apt-get install autoconf -y
command: docker-php-ext-install pdo pdo_mysql
MageAPIsql:
container_name: MageAPIsql
image: mysql:latest
ports:
- 3306:3306
volumes:
- ./mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 'PWD'
MYSQL_USER: 'USER'
MYSQL_PASS: 'PWD'
composer:
image: composer/composer
command: install
command: composer require experius/magento2apiclient
volumes:
- .app:/app
尝试这样做的结果是:
Cannot find autoconf. Please check your autoconf installation and the
MageAPIDev | $PHP_AUTOCONF environment variable. Then, rerun this script.
所以我尝试进入容器并手动安装 autoconf。那行得通,但是当我尝试使用 docker-php-ext-install pdo pdo_mysql 手动安装 MySQL 时,我得到:
creating libtool
appending configuration tag "CXX" to libtool
configure: patching config.h.in
configure: creating ./config.status
config.status: creating config.h
/usr/local/bin/docker-php-ext-install: 107: /usr/local/bin/docker-php-ext-install: make: not found
我真的不想从头开始容器。 Tbh,我丢失了我制作的 dockerfile 表单,这有我需要的 MSsqlsrv 驱动程序。我只是想为 MySql 安装和启用 PDO 驱动程序。
如果有人已经为 PHP 8 制作了 dockerfile,它安装了 SqlSrv 驱动程序和 MySql 的 PDO,我会试一试。
【问题讨论】:
-
安装前您可能只需要一个
apt-get update。我会查看docker inspect MageAPIsql,因为它可能包含足够的历史来重新创建 Dockerfile。 -
@danblack,我想你误会了。 MS Sqlsrv 的 PDO 驱动程序位于 MageAPIDev 上。我发现它们安装了一个非常长的 dockerfile,因为安装驱动程序很麻烦。我对它进行了检查,它并没有透露很多关于原始 dockerfile 的信息。