1、创建目录,上传包
创建项目目录
$ mkdir apache_php $ cd apache_php
把包下载后放到服务器该目录下
$ ls apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.39.tar.gz php-7.2.9.tar.gz
2、创建Dockerfile
$ vi Dockerfile

# From表示使用centos:latest这个镜像为基础构建我们的镜像 FROM centos:latest # 创建者的基本信息 MAINTAINER xiaozhou (xiaozhou@docker.com) # 把下载好的源码包copy到容器,使用ADD会自动将文件解压,/src/ 是容器中存放文件的目录,目录不存在会自动创建 ADD apr-1.6.5.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.39.tar.gz php-7.2.9.tar.gz /src/ # RUN命令会在容器中执行,每次执行都会创建一层新的镜像,这里为了减少层数使用\换行,使用 && 将命令连接 RUN yum -y install gcc make zlib-devel pcre-devel pcre \ #安装apache依赖库apr && cd /src && cd apr-1.6.5 \ && ./configure --prefix=/usr/local/apr/ && make && make install \ && cd /src && cd apr-util-1.6.1 \ # 需要先安装expat-devel,不然安装apr-util会报错 && yum -y install expat-devel \ && ./configure --prefix=/usr/local/apr-util/ --with-apr=/usr/local/apr/ \ #安装apache依赖库 apr-util && make && make install \ && cd /src && cd httpd-2.4.39 \ && ./configure \ --prefix=/usr/local/apache/ \ #指定刚才安装的apr目录 --with-apr=/usr/local/apr/ \ #指定刚才安装的apr-util目录 --with-apr-util=/usr/local/apr-util/ \ --enable-so \ --enable-deflate=shared \ --enable-expires=shared \ --enable-rewrite=shared \ --enable-static-support \ #编译apache && make && make install \ && cd /src && cd php-7.2.9 \ && yum -y install libxml2-devel \ # 安装php依赖 && yum -y install openssl openssl-devel libcurl-devel perl \ # apxs没有指定perl的路径需要修改这个文件,不然会报错 && sed -i '1i\#!/usr/bin/perl -w' /usr/local/apache/bin/apxs \ # 扩展可以按需选择,这里只加了常用的,扩展有依赖的需要先使用yum安装对应依赖 && ./configure \ -prefix=/usr/local/php \ --with-pdo-mysql \ --with-curl \ --enable-bcmath \ --with-openssl \ --enable-mbstring \ --enable-opcache \ # 指定刚才安装的apache位置 --with-apxs2=/usr/local/apache/bin/apxs \ && make && make install # 将端口暴露出去,注意:这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。要在宿主机中访问这个端口可以在运行时加上 -p 80:80 这样访问宿主机80端口就会映射到容器的80端口 EXPOSE 80 # 启动服务命令 CMD ["/usr/local/apache/bin/httpd", "-DFOREGROUND"]
3、构建镜像
$ docker build -t apache:php .
4、启动容器
$ docker run -it -d -p 80:80 apache:php
浏览器访问,看见出现 It works! ,说明部署成功
http://192.168.121.121
参考:
https://phperzh.com/articles/3175