本文目录一览:
- 1、在PhpStrom中配置Docker作为本地开发环境
- 2、Docker php安装扩展步骤详解
- 3、Dockerfile使用官方php镜像安装扩展不成功?
- 4、docker 安装php扩展出错,bash: docker-php-ext-install: command not found
- 5、Docker PHP 安装扩展汇总
在PhpStrom中配置Docker作为本地开发环境
平时大家在开发php项目的时候,本地都要装php程序和composer,做单元测试的时候还需要phpunit,如果需要单测覆盖率的话还要开启debug,本文将使用一个docker镜像搞定这些。
下面是一个php7.3+composer2.1+phpunit9.5的dockerfile,大家也可以根据自己的需要进行修改,然后自己构建为镜像
我把构建的镜像打个标签phpstorm:7.3-composer,方便下边使用
也可以拉取我已经构建好的镜像
本地要先启动docker desktop
2.1点击配置 》PHP 》CLI解释器
2.2 点击+ 》Form docker 》 docker 》选择第一步构建的镜像
2.3 添加成功后如下图,我们可以看到php版本号和xdebug的版本,然后点击应用,确定
2.4 这时已经配置成功了,phpstorm会自动生成路径映射,把项目根目录映射到容器中/opt/project
3.1 这步配置比较简单,看图就可以了
3.2 安装一个包测试一下
新建一个composer.json文件,点击 【工具】 》【composer】》【管理依赖项】》在composer.json文件里随便写一个包名,然后点击安装,如果执行成功,这步就完成了。如果失败,可以查看事件日志是否缺少某些php扩展,然后在dockerfile里安装扩展,重新构建镜像,再次点击composer安装,重新构建镜像不用再重新配置phpstorm。-dockerphp扩展
添加命令行工具,选择composer
看到输出composer版本号,也就配置成功一半了。
我们执行下
配置就直接看图吧
写个单元测试一下,首先准备一个要测试的文件如下
然后点击 【使用覆盖率运行】,开始测试
Docker php安装扩展步骤详解
Docker 中的PHP容器安装扩展的方式有
1、通过pecl方式安装
2、通过php 容器中自带的几个特殊命令来安装,这些特殊命令可以在Dockerfile中的RUN命令中进行使用。
docker-php-source extract | delete
参数说明:
案例:
命令格式:
docker-php-ext-install “源码包目录名”
注意点:
案例:
Dockerfile使用官方php镜像安装扩展不成功?
镜像中没有make命令,甚至没有gcc、g++,虽然有pecl,但是由于没有gcc编译器,所以也不能运行phpize其实在该镜像的/usr/local/bin目录下有一个docker-php-ext-install程序专门用来安装php扩展运行它即可显示出能够安装的扩展,配合docker-php-ext-enable程序可以控制扩展的启动/禁用。-dockerphp扩展
docker 安装php扩展出错,bash: docker-php-ext-install: command not found
不是这样用的啊 进容器后 直接 yum install php 就完了 进容器后就不支持 docker+命令了
Docker PHP 安装扩展汇总
FROM php:7.2-fpm
Core, ctype, curl
date, dom
fileinfo, filter, ftp
hash
iconv
json
libxml
mbstring, mysqlnd
openssl
pcre, PDO, pdo_sqlite, Phar, posix
readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard
tokenizer
xml, xmlreader, xmlwriter
zlib
RUN docker-php-ext-install -j$(nproc) bcmath calendar exif gettext
sockets dba mysqli pcntl pdo_mysql shmop sysvmsg sysvsem sysvshm
RUN apt-get update
apt-get install -y --no-install-recommends libbz2-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) bz2
RUN apt-get update
apt-get install -y --no-install-recommends libenchant-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) enchant
RUN apt-get update
apt-get install -y --no-install-recommends libfreetype6-dev libjpeg62-turbo-dev libpng-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
docker-php-ext-install -j$(nproc) gd
RUN apt-get update
apt-get install -y --no-install-recommends libgmp-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) gmp
RUN apt-get update
apt-get install -y --no-install-recommends libxml2-dev libtidy-dev libxslt1-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) soap wddx xmlrpc tidy xsl
RUN apt-get update
apt-get install -y --no-install-recommends libzip-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) zip
RUN apt-get update
apt-get install -y --no-install-recommends libsnmp-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) snmp
RUN apt-get update
apt-get install -y --no-install-recommends libpq-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) pgsql pdo_pgsql
RUN apt-get update
apt-get install -y --no-install-recommends libpspell-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) pspell
RUN apt-get update
apt-get install -y --no-install-recommends librecode-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) recode
RUN apt-get update
apt-get install -y --no-install-recommends firebird-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) pdo_firebird
RUN apt-get update
apt-get install -y --no-install-recommends freetds-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-configure pdo_dblib --with-libdir=lib/x86_64-linux-gnu
docker-php-ext-install -j$(nproc) pdo_dblib
RUN apt-get update
apt-get install -y --no-install-recommends libldap2-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu
docker-php-ext-install -j$(nproc) ldap
RUN apt-get update
apt-get install -y --no-install-recommends libc-client-dev libkrb5-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-configure imap --with-kerberos --with-imap-ssl
docker-php-ext-install -j$(nproc) imap
RUN apt-get update
apt-get install -y --no-install-recommends firebird-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) interbase
RUN apt-get update
apt-get install -y --no-install-recommends libicu-dev
rm -r /var/lib/apt/lists/*
docker-php-ext-install -j$(nproc) intl
RUN apt-get update \
apt-get install -y --no-install-recommends libmcrypt-dev
rm -r /var/lib/apt/lists/*
pecl install mcrypt-1.0.1
docker-php-ext-enable mcrypt
RUN export CFLAGS=" PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS"
apt-get update
apt-get install -y --no-install-recommends libmagickwand-dev
rm -rf /var/lib/apt/lists/*
pecl install imagick-3.4.3
docker-php-ext-enable imagick
RUN apt-get update \
apt-get install -y --no-install-recommends zlib1g-dev libmemcached-dev
rm -r /var/lib/apt/lists/*
pecl install memcached
docker-php-ext-enable memcached
RUN pecl install redis-4.0.1 docker-php-ext-enable redis
RUN docker-php-ext-configure opcache --enable-opcache docker-php-ext-install opcache
RUN set -ex;
docker-php-source extract;
{
echo '# ' ;
echo 'AC_DEFUN([PHP_ALWAYS_SHARED],[])dnl';
echo;
cat /usr/src/php/ext/odbc/config.m4;
} temp.m4;
mv temp.m4 /usr/src/php/ext/odbc/config.m4;
apt-get update;
apt-get install -y --no-install-recommends unixodbc-dev;
rm -rf /var/lib/apt/lists/*;
docker-php-ext-configure odbc --with-unixODBC=shared,/usr;
docker-php-ext-configure pdo_odbc --with-pdo-odbc=unixODBC,/usr;
docker-php-ext-install odbc pdo_odbc;
docker-php-source delete
LABEL Author="Leo"
LABEL Version="1.0.25-fpm"
LABEL Description="PHP FPM 7.2 镜像. All extensions."