docker Dockerfile学习---构建apache环境
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环境的更多相关文章
- docker Dockerfile学习---构建redis环境
1.创建项目目录并下载包及文件 mkdir centos_redis cd centos_redis wget http://download.redis.io/releases/redis-5.0. ...
- docker Dockerfile学习---构建mongodb环境
1.创建项目目录并上传包 mkdir centos_mongodb cd centos_mongodb .tgz 2.编辑配置文件 vi mongodb.conf dbpath = /data/usr ...
- docker Dcokerfile学习---构建nginx环境
1.创建项目目录并上传包 $ mkdir docker_nginx $ cd docker_nginx 下载nginx包 $ wget http://nginx.org/download/nginx- ...
- docker 灵活的构建 php 环境
地址: https://github.com/ydtg1993/server 使用docker搭建灵活的线上php环境 有时候你可能不太需要一些别人已经集成了的包或者镜像 ...
- Dockerfile分离构建LNMP环境部署wordpress
最近忙着写自己的项目,也把一个站点的bbs论坛打算迁移到Docker中,测试没发现啥大问题.在单台上面的架构如下:(往后我们也是要讲到compose和swarm调度的慢慢来) 1.首先我们先安装一下d ...
- docker Dockerfile学习---nginx负载均衡tomcat服务
1.此过程在nginx的基础上,也就是上篇博客写的内容. 2.创建项目目录并上传包,解压 $ mkdir centos_tomcat $ cd centos_tomcat $ tar zxvf jdk ...
- Docker容器学习梳理 - 基础环境安装
以下是centos系统安装docker的操作记录 1)第一种方法:采用系统自带的docker安装,但是这一般都不是最新版的docker安装epel源[root@docker-server ~]# wg ...
- Docker容器学习梳理 - Dockerfile构建镜像
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- 4.Docker容器学习之Dockerfile入门到放弃
原文地址: 点击直达 0x01 Dockerfile 编写 描述:Dockerfile是一个文本格式的配置文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内 ...
随机推荐
- Encode
by kinsly 本文的内容均基于python3.5 编码一直是python中的大坑,反正我是一直没搞明白,今天在做爬虫的时候,觉得实在是有必要把这些东西整理一下. 什么是编码 简单的来说就是,为了 ...
- ActionEnter cannot be resolved to a type
2014-6-13 23:50:57 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for ser ...
- ElasticSearch中分词器组件配置详解
首先要明确一点,ElasticSearch是基于Lucene的,它的很多基础性组件,都是由Apache Lucene提供的,而es则提供了更高层次的封装以及分布式方面的增强与扩展. 所以要想熟练的掌握 ...
- AtCoder Beginner Contest 127 D,E,F
D Integer Cards 题意:先给出n个数字,然后可以有m次操作,每次操作以数字对(x,y)表示最多能选x个数字把它变成y,问经历m次操作后n个数字和最大为多少? 解法:一个明显正确的做法是: ...
- codeforces 724G - Xor-matic Number of the Graph 线性基+图
题目传送门 题意:给出衣服无向带权图,问有多少对合法的$<u,v,s>$,要求$u$到$v$存在一条路径(不一定是简单路径)权值异或和等于$s$,并且$u<v$.求所有合法三元组的s ...
- 转帖 maven(一) maven到底是个啥玩意~
转载自:https://www.cnblogs.com/whgk/p/7112560.html 我记得在搞懂maven之前看了几次重复的maven的教学视频.不知道是自己悟性太低还是怎么滴,就是搞不清 ...
- Java基础之ArrayList类
一.ArrayList ArrayList继承了AbstractList分别实现了List.RandomAccess(随机访问).Cloneable(可被克隆(复制的意思)). Serializabl ...
- 基础课(三)实验串入OSPF协议和HSRP协议以及HSRP外部链路跟踪
实验要求1: ,2,3,4分别是vlan10,20,30,40的网关(网关IP-192.168.X.254 /24) 对vlan10做HSRP热备 SW1做主网关,SW2做备份网关 ...
- Delphi动态添加控件
{动态添加导航} var Panl:Tpanel; MainPage,Subpage:TPageControl; TabSheet1: TTabSheet; ToolBar2: TToolBar; S ...
- “今日头条杯”首届湖北省大学程序设计竞赛--F. Flower Road
题目链接:点这 github链接:(包含数据和代码,题解):点这 链接:https://www.nowcoder.com/acm/contest/104/E来源:牛客网 题目描述 (受限于评测机,此题 ...