首页 > 编程语言 >构建按需开启扩展的php Docker 镜像

构建按需开启扩展的php Docker 镜像

时间:2024-05-27 14:22:34浏览次数:23  
标签:odbc sqlsrv apt pdo 镜像 Docker php docker

项目中需要使用到mssql,因此php需要开启sqlsrv,pdo_sqlsrv的扩展,并且需要安装ODBC驱动。搜索了一圈,整理出成功方案如下:

# PHP 容器配置
FROM suyar/php:8.2-integration

# 构建生产/开发测试环境的镜像
ARG ENVIRONMENT

# 替换系统镜像源,修改composer镜像源
RUN sed -i 's@/deb.debian.org/@/mirrors.tuna.tsinghua.edu.cn/@g' /etc/apt/sources.list.d/debian.sources && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

# 复制php配置文件
RUN  if [ "$ENVIRONMENT" = "development" ] ; then \ 
          mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" ; \
     else \
          mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" ; \
     fi

# 安装mssql驱动,procps
RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc
RUN curl https://packages.microsoft.com/config/debian/12/prod.list | tee /etc/apt/sources.list.d/mssql-release.list
RUN sed -i 's/ signed-by=\/usr\/share\/keyrings\/microsoft-prod.gpg//g' /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18 procps && apt-get upgrade -y && rm -rf /var/lib/apt/lists/*

# 增加 odbc, pdo_odbc 扩展 
RUN set -ex; \
docker-php-source extract; \
{ \
     echo '# https://github.com/docker-library/php/issues/103#issuecomment-271413933'; \
     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

RUN  if [ "$ENVIRONMENT" = "development" ] ; then\ 
          # 增加 sqlsrv, pdo_sqlsrv, xdebug 扩展  -- 用于开发,测试环境
          pecl channel-update pecl.php.net && pecl install sqlsrv pdo_sqlsrv xdebug && docker-php-ext-enable sqlsrv pdo_sqlsrv xdebug ; \
     else \
          # 增加 sqlsrv, pdo_sqlsrv 扩展 -- 用于生产环境
          pecl channel-update pecl.php.net && pecl install sqlsrv pdo_sqlsrv && docker-php-ext-enable sqlsrv pdo_sqlsrv ; \
     fi


# build 命令
# docker buildx build php:0.0.1 --build-arg="ENVIRONMENT=development" .

 

感谢 suyar 分享的基础镜像。另外整理过程中参考了很多大神的方案,但时间过久已经无法一一列出,感谢前辈们的分享。

标签:odbc,sqlsrv,apt,pdo,镜像,Docker,php,docker
From: https://www.cnblogs.com/dust2/p/18215404

相关文章

  • PHP 多维数组排序
    PHP封装多维数组排序函数1functionallKeySort(&$array){2if(!is_array($array)){3return;4}5$keys=array_keys($array);6sort($keys);7$sortedArray=array();8foreach($keysas$key){9$sortedArray[$......
  • npm下载依赖太慢?镜像源切换与设置!
    目录项目背景​编辑 接下来讲讲镜像源切换的两种设置模式]一、命令行模式1、查看当前镜像源2、删除镜像3、小结二、文件配置模式  常用的镜像项目背景依赖安装中断或响应特别慢。可以看到当前所用的镜像是https://registry.npmjs.org。 切换淘宝镜像之后......
  • php在线影视评论网站的设计与实现论文
    目录摘要1Abstract2第1章绪论31.1项目研究的背景31.2开发目的和意义31.3国内外研究现状4第2章系统开发工具42.1PHP编程语言42.2B/S模式52.3MySQL数据库52.4Django框架介绍62.5Vue开发技术62.6JavaScript简介7第3章系统分析93.1概......
  • 七年之痒!一个 PHP 程序员职业生涯的自述
    大家好,我是码农先森。今年刚好是我毕业的第七个年头,在婚姻感情当中都有一种「七年之痒」的说法,这次我把这个词「七年之痒」用一次在我的职业生涯复盘上。七年前我从告别校园,踏入互联网编程行业,七年后我依旧在编码的岗位上孜孜不倦,除了上学读书这算是我坚持了最久的一件事了。如果......
  • 解读 MySQL 容器信息:`docker inspect` 字段详解
    前言在使用Docker时,dockerinspect命令是一个非常有用的工具,它能够返回容器或镜像的详细配置信息和状态。以下是对dockerinspectmysql命令输出的字段的详细解释,这些信息可以帮助您更好地了解容器的内部工作机制。容器基础信息Id:容器的唯一标识符。Created:容器......
  • 使用docker安装gitlab
    Version:gitlab-ce:16.2.4-ce.0简介Gitlab是一个开源的Git代码仓库系统,可以实现自托管的Github项目,即用于构建私有的代码托管平台和项目管理系统。系统基于RubyonRails开发,速度快、安全稳定。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团......
  • DockerCompose-项目一键部署
    Compose是用于定义和运行多容器Docker应用程序的工具。通过Compose,您可以使用YML文件来配置应用程序需要的所有服务。Compose使用的三个步骤使用Dockerfile定义应用程序的环境。使用docker-compose.yml定义构成应用程序的服务,这样它们可以在隔离环境中一起......
  • Docker Java项目部署
    将你的java项目打包为一个jar包准备Dockerfile文件#设置本镜像需要使用的基础镜像FROMjava:8#把jar包添加到镜像中ADDyylq-ds.jar/app.jar#镜像暴露的端口EXPOSE8199RUNbash-c'touch/app.jar'#容器启动命令ENTRYPOINT["java","-jar","/app.......
  • phpstorm进行动态调试
    php远程调试配置xdebug配置先下载xdebug,看phpinfo内容选版本ctrl+a全选phpinfo后复制去识别即可(Xdebug:Support—TailoredInstallationInstructions)下载后,放入php\ext目录里面,一般教程都是直接去php.ini直接加信息,但其实可以先不急,去phpstudy先选上扩展勾上xdebug,......
  • docker下安装mysql,并实现主从复制
    1mysql的安装与启动1.1拉取mysql5.7的镜像dockerpullmysql:5.71.2运行dockerrun:运行Docker容器的命令。--restart=always:指定容器在退出时总是重新启动。这意味着,无论容器是正常退出还是异常退出,Docker将自动重新启动这个容器。--privileged=true:......