docker 编辑Dockerfile 添加php7.2 acpu的问题

目录
  • docker 编辑Dockerfile 添加php7.2 acpu
  • Dockerfile基于镜像php:7.2-fpm构建自定义php7.2镜像
    • docker-php-ext 方式安装
    • pecl方式安装

docker 编辑Dockerfile 添加php7.2 acpu

直接编辑Dockerfile

ARG INSTALL_APCU=false
RUN if [ ${INSTALL_APCU} = true ]; then \
    # Install Php apcu Extension
    apk add apcu \
    && pecl install https://pecl.php.net/get/apcu-5.1.13.tgz apcu.tgz \
    && docker-php-ext-enable apcu \
;fi

执行

docker-compose up --build web

等待安装即可

需要安装其他扩展,自己去pecl上面查找对应的php版本的包安装即可

地址:https://pecl.php.net/package/APCu

Dockerfile基于镜像php:7.2-fpm构建自定义php7.2镜像

构建可以ssh连接、有基本命令、并且有zip pdo pdo_mysql curl redis 等扩展的php7.2镜像

  • 以下代码需要写在Dockerfile文件中,并且已安装docker命令
  • 在Dockerfile所在目录下,执行构建镜像命令即可开始构建:docker build -t hengda/php7.2-fpm:v1 .

docker-php-ext 方式安装

FROM php:7.2-fpm
RUN apt-get update \
	#cp -r /etc/apt/sources.list /etc/apt/sources.list.bak \
	#修改软件源
	#
	#&& echo "deb http://mirrors.aliyun.com/debian/ wheezy main non-free contrib" > /etc/apt/sources.list \
	#&& echo "deb http://mirrors.aliyun.com/debian/ wheezy-proposed-updates main non-free contrib" >> /etc/apt/sources.list \
	#&& echo "deb-src http://mirrors.aliyun.com/debian/ wheezy main non-free contrib" >> /etc/apt/sources.list \
	#&& echo "deb-src http://mirrors.aliyun.com/debian/ wheezy-proposed-updates main non-free contrib" >> /etc/apt/sources.list \
	#
	#&& apt-get update \
	#切换目录
	&& cd /tmp \
	#安装sudo
	&& apt-get install sudo -y \
	#安装vim文本编辑器
	&& apt-get install vim -y \
	#安装wget下载工具
	&& apt-get install wget -y \
	#安装网络管理工具
	&& apt-get install net-tools -y \
	#安装ping
	&& apt-get install iputils-ping -y \
	#安装telnet
	&& apt-get install telnet -y \
	#安装进程管理命令ps, top, vmstat, w, kill, free, slabtop, and skill
	&& apt-get install procps -y \
	#安装C/C++编译包,该软件包,编译c/c++所需要的软件包也都会被安装。
	#该包包含gcc,g++,make等`
	&& apt-get install build-essential -y \
	#安装zip依赖 zlib
	&& apt-get install zlib1g-dev -y \
	#安装zip
	&& bash -c "apt-get install unzip -y;" \
	#安装openssh-server  即sshd
	&& apt install -y openssh-server -y \
	#给root用户设置初始密码123456
	&& echo "root:123456" | chpasswd \
	#修改配置项 PermitRootLogin
        #&& sed 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \
	#&& cat /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \
	#修改配置项 UsePAM
        #&& sed 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \
	#&& cat /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \
	#同时修改配置项PermitRootLogin 和UsePAM
	#&& sed 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config > /etc/ssh/sshd_config.tmp \
	#&& sed 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config.tmp > /etc/ssh/sshd_config \
	&& sed -i 's/#PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
	&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
	&& sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config \
	################################
	#
	# 用docker-php-ext-install 命令安装php扩展(安装/usr/src/php/ext/目录下的扩展,不存在的可以下载扩展安装包放入该目录,然后再执行/usr/local/bin/docker-php-ext-install xxx 安装)
	#
	# curl扩展需要以下扩展包
	&& apt-get install libcurl4-openssl-dev -y \
	#
	# bz2扩展(bzip2)需要以下扩展包,安装 bzip2 bzip2-devel 否则下面的docker-php-ext-install 安装bz2扩展会报错: configure: error: Please reinstall the BZip2 distribution
	&& apt-get install bzip2 -y \
	&& apt-get install libbz2-dev -y \
	#
	# redis扩展没有离线包,需要先下载解压移动到/usr/src/php/ext/目录下
	&& cd /tmp \
	&& curl -L -o phpredis-5.0.2.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 \
	&& tar -xzvf phpredis-5.0.2.tar.gz \
	&& rm -f phpredis-5.0.2.tar.gz \
	#
	#解压后移动到/usr/src/php/ext目录下
	&& mkdir -p /usr/src/php/ext/ \
	&& mv phpredis-5.0.2 /usr/src/php/ext/redis \
	#
	# 开始安装php这些php扩展
	&& /usr/local/bin/docker-php-ext-install zip pdo pdo_mysql curl redis \
	################################
	# 扩展所在目录:
	#Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20131226/
	# php的扩展目录在 /usr/local/lib/php/extensions/no-debug-non-zts-20170718
	#配置
	#cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini
	#vim /usr/local/etc/php/php.ini
	#然后添加配置项extension=zip.so即可
	################################
	#安装composer命令
	#下载composer.phar
	#&& php -r "readfile('https://getcomposer.org/installer');" | php \
	#给composer.phar赋可执行权限
	#将composer.phar复制到/bin/目录下并重命名为composer
	#&& mv composer.phar /bin/composer \
	#修改权限,否则执行会报错
	#&& chmod -R 777 /bin/composer \
	#查看composer版本
	#composer -v
	#修改composer镜像源地址为国内地址
	#&& composer config -g repo.packagist composer https://packagist.phpcomposer.com \
	################################
	#composer安装laravel
	#composer global require laravel/installer
	&& echo "安装完毕!" \

pecl方式安装

以上扩展通过pecl方式安装:

	##php-zip####################################################
	# 安 装 php 扩展 php-zip(zip)
	# 切换目录到 /tmp
	&& cd /tmp \
	# 下载扩展包
	&& wget http://qinqinxia.com/zip-1.13.5.tgz \
	# && wget http://pecl.php.net/get/zip-1.13.5.tgz \
	# 解压
	&& tar -zvxf zip-1.13.5.tgz \
	# 删除压缩包
	&& rm -f zip-1.13.5.tgz \
	# 解压后复制到目录 /usr/local/src
	&& mv zip-1.13.5 /usr/local/src \
	# 切换目录到 /usr/local/src/zip-1.13.5
	&& cd /usr/local/src/zip-1.13.5 \
	&& /usr/local/bin/phpize \
	&& ./configure --with-php-config=/usr/local/bin/php-config \
	&& make && make install \
	#
	##pdo_mysql#################################################
	# 安 装 php 扩展 pdo_mysql
	# 切换到 tmp 目录
	&& cd /tmp \
	#下 载 php-mysql
	&& wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz \
	# 解压
	&& tar -xzvf PDO_MYSQL-1.0.2.tgz \
	&& rm -f PDO_MYSQL-1.0.2.tgz \
	# 解压后移动到 /usr/local/src
	&& mv PDO_MYSQL-1.0.2 /usr/local/src \
	# 切换到目录 /usr/local/src/PDO_MYSQL-1.0.2
	&& cd /usr/local/src/PDO_MYSQL-1.0.2 \
	# 安装 php-mysql
	&& /usr/local/bin/phpize \
	&& ./configure --with-php-config=/usr/local/bin/php-config --with-pdo-mysql=/usr/local/bin/mysql \
	&& make && make install \
	#
	##redis#############################################
	# 安装 php 扩展 redis
	# 下载
	&& cd /tmp \
	&& curl -L -o phpredis-5.0.2.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2 \
	&& tar -xzvf phpredis-5.0.2.tar.gz \
	&& rm -f phpredis-5.0.2.tar.gz \
	# 解压后移动到 /usr/local/src
	&& mv phpredis-5.0.2 /usr/local/src \
	&& cd /usr/local/src/phpredis-5.0.2 \
	&& /usr/local/bin/phpize \
	&& ./configure --with-php-config=/usr/local/bin/php-config \
	&& make && make install

其他扩展与此雷同

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Dockerfile文件详解

    目录 什么是dockerfile? Dockerfile的基本结构 Dockerfile文件说明 FROM MAINTAINER RUN shell执行 exec执行 ADD COPY CMD ENTRYPOINT LABEL ENV EXPOSE VOLUME WORKDIR USER ARG ONBUILD 以下是一个小例子: 什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中

  • 如何使用 Dockerfile 创建一个简单容器

    目录 Dockerfile 写一个 Dockerfile 优化 Dockerfile container shell Dockerfile Dockerfile 是用于指导 docker 创建自定义 image 的一系列指令,是用于创建 image 的蓝图. 现在有一个简单的 node 项目( 其中Dockerfile 是后面加的,初始项目没有此文件): 要运行此代码,一般的做法是,先在本机安装 node,然后在项目文件夹中先后运行: npm install 以及: node server.js

  • Docker部署java项目的详细步骤(利用Dockerfile方式)

    目录 前言 1. 首先找一个你熟悉的目录下创建一个目录upload(这个目录可以随便),并把java的linux和jar包上传进去 2. 创建一个名为 Dockerfile文件 3. 以上命令配置完成后,即可输入命令进行build,然后回车 4 . 启动该容器 5. 访问地址 总结 前言 如何将java项目部署到Docker中呢,这里以一个springboot为例 以下命令全部都是以linux为基础的 1. 首先找一个你熟悉的目录下创建一个目录upload(这个目录可以随便),并把java的li

  • dockerfile指令构建docker镜像的示例代码

    目录 初识Dockerfile 编写一个自己的docker 镜像: DockerFile docker build . 命令 查看镜像是如何生成的 初识Dockerfile Dockerfile就是用来构建docker镜像的构建文件!命令脚本! 通过这个脚本可以生成镜像,镜像是一层层的,脚本是一行行的命令,每行命令都是一层 dockerfile是面向开发的,我们以后要发布项目,作镜像,就需要编写dockerfile文件,这个文件十分简单. Dockerfile镜像之间成为了企业交付的标准,必须掌

  • Python Web App开发Dockerfiles编写示例

    目录 TL;DR 内容 1. 简单的 Dockerfile 样例 2. 使用 Gunicorn 实现热更新 3. 运行一个单文件 python 脚本 4. 部署静态文件 5. 生产环境中的直接构建 6. 生产环境中的多级构建 原文地址:How to write Dockerfiles for Python Web Apps 原文作者:Praveen Durairaj 译文出自:https://github.com/xitu/gold-miner 本文永久链接:https://github.com

  • 利用Dockerfile优化Nestjs构建镜像大小详情

    目录 前言 原文开始 开始编写Dockerfile 在本地测试下 Dockerfile 生产环境优化 使用Alpine node镜像 添加 NODE_ENV 环境变量 使用npm ci 而不是npm install 使用User指令 使用多阶段构建 最终的Dockerfile 前言 众所周知,Node.js项目在部署的时候,无论是在虚拟机部署,还是使用docker进行部署,无非都是要先npm install,然后把整个node_modules丢上去,最后启动服务 但是有些开发依赖在生产环境部署的

  • 使用Dockerfile实现数据卷的挂载问题(推荐)

    大家好,我们今天分享使用Dockerfile来实现数据卷的挂载 首先呢,要了解一下什么是Dockerfile Dockerfile就是 一个可以用来构建镜像的文件,可以理解为一个脚本文件 可以通过这个脚本文件自定义生成一个我们想要的镜像,镜像都是一层一层的,里面的每一条命令就是一层 创建一个目录 root@localhost home]# mkdir docker-vl2 编辑这样这样的一个文件 root@localhost docker-vl2]# vim dockerfile01 FROM

  • docker通过Dockerfile构建mysql镜像的方法

    构建Dockerfile ,路径 /docker/mysql FROM hub.c.163.com/library/mysql:5.7 #作者信息 MAINTAINER hu "***@qq.com" #修改编码方式 RUN echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql restart EXPOSE 3306 到Docker

  • docker 编辑Dockerfile 添加php7.2 acpu的问题

    目录 docker 编辑Dockerfile 添加php7.2 acpu Dockerfile基于镜像php:7.2-fpm构建自定义php7.2镜像 docker-php-ext 方式安装 pecl方式安装 docker 编辑Dockerfile 添加php7.2 acpu 直接编辑Dockerfile ARG INSTALL_APCU=false RUN if [ ${INSTALL_APCU} = true ]; then \     # Install Php apcu Extensio

  • Docker中Dockerfile制作镜像的方法步骤

    目录 1.基于容器制作 2. 基于Dockerfile制作镜像 2.1 Dockerfile命令 2.2 简单示例 docker 镜像的制作,可以基于容器创建镜像,也可基于 dockerfile 构建镜像.但需要注意的是,我们并不是真正"创建"新镜像,而是基于一个已有的基础镜像,如 centos 或 ubuntu 等,构建新镜像而已. 1.基于容器制作 联合文件系统(UnionFS)挂载提供了容器的文件系统,任何对容器内文件系统的改动都会被写入到新的文件层中,这个文件层归创建它的容器所

  • Docker执行DockerFile构建过程指令解析

    目录 DockerFile 简介 DockerFile 构建过程 DockerFile 指令解析 DockerFile 案例演示 构建一个 mycentos 镜像 DockerFile 简介 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么那些无法重复的问题.镜像构建透明性的问题.体积的问题就都会解决.这个脚本就是 Dockerfile. DockerFile 是用来构建 Docker 镜像的构建文

  • HTML中的XML数据岛记录编辑与添加

    <HTML><HEAD><Title>HTML中的数据岛中的记录集</Title></HEAD><body bkcolor=#EEEEEE text=blue bgcolor="#00FFFF"><Table align=center width="100%"><TR><TD align="center">   <h5><

  • Mac为docker和kubectl添加自动补全命令的方法

    kubectl简介 kubectl是操作k8s集群的命令行工具,安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeconfig环境变量或设置--kubeconfig来指定其他的kubeconfig文件.kubectl通过与apiserver交互可以实现对k8s集群中各种资源的增删改查.接下来将会介绍kubectl语法,命令行的操作,并介绍常见的示例.命令的详细信息.参数和子命令可在kubectl参考文档中查看. k

  • Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

    本文实例为大家分享了Dockerfile创建支持ssh服务自启动的容器镜像,供大家参考,具体内容如下 1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "kongxx@hotmail.com" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh

  • 详解docker中Dockerfile指令创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境,跑一个spring boot小项目. Dockerfile: Dockerfile由一行行命令语句组成,并且支持用"#"开头作为注释,一般的,Dockerfile分为四部分:基础镜像信息,维护者信息,镜像操作指令和容器启动时执行的指令. Dockerfile的书写规则及指令使用方法 Do

  • docker使用Dockerfile构建镜像的方法

    构建镜像 前面我们使用各种镜像进行测试演示,很多情况下我们是需要自己的镜像,满足自己业务需要的镜像,这就需要我们能够定制自己需要的镜像,构建 Docker 镜像有以下两种方法. 使用 docker commit 命令. 使用 docker build 命令和 Dockerfile 构建文件. 现在我们不推荐使用 docker commit 命令,而应该使用更灵活.更强大的 Dockerfile 来构建 Docker 镜像. 1.使用 commit 命令构建 docker commit 命令是创建

  • docker自定义镜像构建php7的方法

    首先进行简单的docker安装. 要进行自定义镜像,我们需要选择一个基础镜像进行构建自己的镜像:其实说白了,就是在一个有基础定义好的容器内,执行安装各种程序的命令,生成 所谓的Dockerfile 文件,既然如此第一步我们首先需要找一个本地的镜像作为基础镜像来操作即可: 1 如上图所示,我们来以centos为基础镜像,来构建一个Dockerfile 2第二步我们需要构建一个目录,用于存放Dockerfile文件 在root下构建docker_demo目录,存放 Dockerfile文件以及需要安

随机推荐