使用Dockerfile编写PHP环境

准备环境

准备好以下文件

1、crontab

2、default.conf

3、nginx.conf

4、php-docker.conf

5、php.ini

6、php-www.conf

7、sources.list

8、supervisord.conf

编写dockerfile

cat dockerfile

#使用php-fpm:5.6基础镜像
FROM php:5.6-fpm
MAINTAINER wfy

#使用apt-get源(docker官方镜像系统大多为debian或者Ubuntu,所以使用apt-get安装)
COPY conf/sources.list /etc/apt/sources.list

#先安装php依赖库和常用命令
RUN apt-get update && apt-get install -y \
supervisor cron nginx \
libmagickwand-dev bzip2 libmemcached-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev libpng-dev \
iproute net-tools telnet wget curl \
&& apt-get clean && rm -r /var/lib/apt/lists/*

#安装php核心扩展
RUN docker-php-ext-install -j$(nproc) iconv mcrypt

#如果安装的扩展需要自定义配置时
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd

#pecl 扩展
RUN docker-php-ext-install bcmath dba exif pdo_mysql bz2 zip mysql

#imagick 扩展
RUN pecl install imagick && docker-php-ext-enable imagick

#memcached 扩展
RUN pecl install memcached-2.2.0 && docker-php-ext-enable memcached

#redis 扩展
RUN pecl install redis-4.3.0 && docker-php-ext-enable redis

#soap 扩展
RUN docker-php-ext-install soap && docker-php-ext-enable soap

#配置文件
#php配置文件
ADD conf/php.ini /usr/local/etc/php/php.ini
ADD conf/php-www.conf /usr/local/etc/php-fpm.d/www.conf
ADD conf/php-docker.conf /usr/local/etc/php-fpm.d/docker.conf

#nginx配置文件
ADD conf/nginx.conf /etc/nginx/nginx.conf
ADD conf/default.conf /etc/nginx/conf.d/default.conf

#crontab配置文件
COPY conf/crontab /var/spool/cron/crontabs/root
RUN chmod 600 /var/spool/cron/crontabs/root

#supervisor配置文件
RUN mkdir -p /var/log/supervisor && mkdir -p /var/log/php
ADD conf/supervisord.conf /etc/supervisor/supervisord.conf

#时区环境变量
ENV TZ=Asia/Shanghai \
LANG=en_US.UTF-8

#开放端口
EXPOSE 80

#启动supervisor服务
CMD ["/usr/bin/supervisord","-c","/etc/supervisor/supervisord.conf"]

注:以上的PHP扩展是根据我自己项目需要安装的,如果你想用同样的方式需要根据自己项目环境需要安装即可!

原文地址:https://blog.51cto.com/13043516/2439415

时间: 2024-11-02 06:02:54

使用Dockerfile编写PHP环境的相关文章

手把手教你写Dockerfile, 附赠MongoDB和Nginx Dockerfile编写实例

手把手教你写Dockerfile, 附赠MongoDB和Nginx Dockerfile编写实例 基础镜像可以用于创建Docker容器.镜像可以非常基础,仅仅包含操作系统:也可以非常丰富,包含灵巧的应用栈,随时可以发布.当你在使用 Docker构建镜像的时候,每一个命令都会在前一个命令的基础上形成一个新层.这些基础镜像可以用于创建新的容器.本篇文章将手把手教您如何从基础镜 像,一步一步,一层一层的从Dockerfile构建容器的过程. Docker简介 Docker项目提供了构建在Linux内核

dockerfile编写教程及相关原理

Dockerfile编写教程 本文大部分内容来自于:https://yeasy.gitbooks.io/docker_practice/image/build.html 创建一个目录并进入到该目录下创建Dockerfile文件 vim /root/test/Dockerfile 需要安装的镜像文件 这里安装了最新版的centos和python3.7.4以及安装过程中所需要的依赖,开放端口为8000端口 初级写法 FROM centos:latest MAINTAINER ryan.liu "[e

DockerFile实战(二):DockerFile编写要求与基本风格

之前分享了一个Nginx的Dockerfile实战文章,但这是基于原有镜像的基础上去添加修改的,那么本文 来详细讲解一下,如何从ubuntu镜像生成一个Nginx镜像 Step1: #最开始,还是需要先搜索一个可用的镜像 $docker search ubuntu #在这里,可以看到许多的相关镜像,但这里我们安装第一个就可以,可以看STARS评级很高的那个 $docker pull ubuntu #如果网络情况够好的话,稍等片刻,一个可用的镜像就下载完毕了 Step2: 下载完镜像以后,我们需要

burpsuite编写插件--环境安装

Burpsuite编写插件环境搭建 在安全测试过程中,我们经常会使用到burpsuite,在burp中允许我们自己编写插件,在Extender-BApp Store中可以选择我们要安装的插件: 但是有时候找不到我们需要的插件,这时候需要我们自己编写,burp支持使用python.java.ruby三种语言.下面我来讲解一下如何使用python编写burpsuite插件.(我是在windows下操作的,其他操作系统相似) 1. 使用python编写插件,我们需要导入jython standalon

docker 应用-2(Dockerfile 编写以及镜像保存提交)

我们可以从docker hub上pull别人的镜像,也可以将容器进行修改,然后commit镜像,并把镜像push到docker hub上被被人使用.但是,直接pull或者push镜像的方式太过笨重,尤其在镜像体积很大的时候. Dockerfile就可以让我们用写脚本的方式自动化构建镜像,避免对容器修改+提交的方式构建镜像,也可以让我们不用每次都耗时耗力的pull一个远程镜像. Dockerfile的编写 直接看官方文档吧:https://docs.docker.com/engine/refere

Dockerfile编写

Dockerfile两种方式对比: 1. 一步步的执行 #### (1) 编写Dockerfile文件 vim Dockerfile FROM ubuntu:14.04 ENTRYPOINT ["/bin/echo"] (2)通过Dockerfile文件进行构建镜像 [[email protected] docker]# docker build . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM ubunt

docker安装与常规使用 && dockerfile编写springbootdemo镜像

dockerfile教程参考 https://blog.csdn.net/qq_33256688/article/details/80319673 docker 创建容器命令: docker run -d -p 10002:8080 --name springdemo springdemo -d : 后台运行 -p :设置端口映射 --name:为容器起名 说明:镜像只需run一次加载到容器,后续通过start.stop和restart指令来管理该容器 进入docker容器里面: 建议使用exe

Dockerfile编写 支持systemctl ,支持ssh ,支持nginx,(容器自启进程)

支持ssh+nginx+进程自启的dockerfile --------Dockerfile 1 -------------------------------------------------------------------------------------------在同一目录下编写Dokerfile文件,以及提前copy authorized_keys 文件,支持ssh验证,yum源如果下载不了自己配置源 vim Dockerfile FROM centos:latest MAIN

Dockerfile编写,以及设置一个自启动脚本

FROM:指定基础镜像,必须为第一个命令 MAINTAINER: 维护者信息 RUN:构建镜像时执行的命令 ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源 CMD:构建容器后调用,也就是在容器启动时才进行调用. ENTRYPOINT:配置容器,使其可执行化.配合CMD可省去"application",只使用参数. LABEL:用于为镜像添加元数据 E