1、创建目录,上传包

创建项目目录

$ mkdir apache_php
$ cd apache_php

把包下载后放到服务器该目录下

$ ls
apr-1.6..tar.gz apr-util-1.6..tar.gz httpd-2.4..tar.gz php-7.2..tar.gz

2、创建Dockerfile

$ vi Dockerfile
# From表示使用centos:latest这个镜像为基础构建我们的镜像
FROM centos:latest # 创建者的基本信息
MAINTAINER xiaozhou (xiaozhou@docker.com) # 把下载好的源码包copy到容器,使用ADD会自动将文件解压,/src/ 是容器中存放文件的目录,目录不存在会自动创建
ADD apr-1.6..tar.gz apr-util-1.6..tar.gz httpd-2.4..tar.gz php-7.2..tar.gz /src/ # RUN命令会在容器中执行,每次执行都会创建一层新的镜像,这里为了减少层数使用\换行,使用 && 将命令连接
RUN yum -y install gcc make zlib-devel pcre-devel pcre \
#安装apache依赖库apr
&& cd /src && cd apr-1.6. \
&& ./configure --prefix=/usr/local/apr/ && make && make install \
&& cd /src && cd apr-util-1.6. \
# 需要先安装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. \
&& ./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. \
&& 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端口
EXPOSE # 启动服务命令
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

docker Dockerfile学习---构建apache环境的更多相关文章

  1. docker Dockerfile学习---构建redis环境

    1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0. ...

  2. docker Dockerfile学习---构建mongodb环境

    1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...

  3. docker Dcokerfile学习---构建nginx环境

    1.创建项目目录并上传包 $ mkdir docker_nginx $ cd docker_nginx 下载nginx包 $ wget http://nginx.org/download/nginx- ...

  4. docker 灵活的构建 php 环境

    地址: https://github.com/ydtg1993/server           使用docker搭建灵活的线上php环境 有时候你可能不太需要一些别人已经集成了的包或者镜像      ...

  5. Dockerfile分离构建LNMP环境部署wordpress

    最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...

  6. docker Dockerfile学习---nginx负载均衡tomcat服务

    1.此过程在nginx的基础上,也就是上篇博客写的内容. 2.创建项目目录并上传包,解压 $ mkdir centos_tomcat $ cd centos_tomcat $ tar zxvf jdk ...

  7. Docker容器学习梳理 - 基础环境安装

    以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wg ...

  8. Docker容器学习梳理 - Dockerfile构建镜像

    在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...

  9. 4.Docker容器学习之Dockerfile入门到放弃

    原文地址: 点击直达 0x01 Dockerfile 编写 描述:Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内 ...

随机推荐

  1. spring基于xml的事务控制

    opm配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...

  2. win10居然把Linux的引导覆盖了

    昨天晚上装了个windows10系统试了试,发现触摸板真的难用.最基本的双指点击做右键都搞不出来,开始菜单里要上下滚动的时候触摸板竟然要水平滑动-- 重启的时候发现居然没有Linux的引导选项了 试了 ...

  3. SVN版本管理与大型代码上线方案(一)

    SVN版本管理与大型代码上线方案(一) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打开百度网盘手机App,操 ...

  4. ICPC2008哈尔滨-E-Gauss Elimination

    题目描述 Li Zhixiang have already been in “Friendship” ocean-going freighter for three months. The excit ...

  5. Java中实现线程通信的三个方法的作用是什么?

    Java提供了3个方法解决线程之间的通信问题,均是java.lang.Object类的方法,都只能在同步方法或者同步代码块中使用,否则会抛出异常. 方法名 作 用 final void wait() ...

  6. Spring 整合 Redis(转)

    转自http://blog.csdn.net/java2000_wl/article/details/8543203 pom构建: <modelVersion>4.0.0</mode ...

  7. shell脚本编写监控内存并发送邮件

    1.准备发送邮件的工具: #!/usr/bin/python# -*- coding: UTF-8 -*-import sysimport smtplibimport email.mime.multi ...

  8. ( vant ) 新手踩坑

    最近在用vant 做H5 页面,坑太他娘的坑娘啊!!!!!!!!!!!!!!!! 1,修改vant组件样式问题 vant 修改组件的样式时,在scoped 属性下没有效果.如果去掉scope 会造成全 ...

  9. linux文件目录颜色及特殊权限对应的颜色

    白色:表示普通文件蓝色:表示目录绿色:表示可执行文件红色:表示压缩文件浅蓝色:链接文件红色闪烁:表示链接的文件有问题黄色:表示设备文件灰色:表示其它文件 各种背景颜色的显示和文件的权限有关红色背景:特 ...

  10. C++——函数及调用

    1.函数调用:实参初始化形参:控制权交给被调函数 2.函数返回(return语句):返回return中的值:控制权交回主函数 3.参数传递   传值 传引用 传指针 初始值 不变,拷贝给形参 可变,形 ...