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),每一条指令构建一层,因此每一条指令的内 ...
随机推荐
- 36-python基础-python3-字典与列表的区别
(1)不像列表,字典中的表项是不排序的.名为 spam 的列表中,第一个表项是 spam[0].但字典中没有“第一个”表项. (2)确定两个列表是否相同时,表项的顺序必须相同,但在字典确定两个字典是否 ...
- SpringBoot开发详解(五)--Controller接收参数以及参数校验
原文链接:http://blog.csdn.net/qq_31001665 如有侵权,请联系博主删除博客,谢谢 Controller 中注解使用 接受参数的几种传输方式以及几种注解: 在上一篇中,我 ...
- Ubuntu16.04+cuda9.0安装教程
1.安装NVIDIA驱动 首先去官网(http://www.nvidia.cn/Download/index.aspx?lang=cn)查找适配自己电脑GPU的驱动,我的电脑驱动版本如下: 执行如下语 ...
- Python操作MySQL实战案例讲解
使用Python的pymysql库连接MySQL数据库 #导入pymysql import pymysql #连接MySQL数据库 #输入数据库的IP地址,用户名,密码,端口 db=pymysql.c ...
- MySQL练习题--sqlzoo刷题
首先查看world表的字段: name continent area population gdp capital tld flag SELECT * FROM world: 2.显示人口至少为2亿的 ...
- AtomicInteger 、Synchronized 和 volatile 之间的区别?
AtomicInteger:无锁的线程安全整数??? Synchronized:同步 volatile:挥发性??? 参考文档:
- vue-cli 3.0版本,配置代理Proxy,不同环境不同target(生产环境,uat环境和本地环境的配置)
1.在项目的的根目录下新建vue.config.js 2.新建一个config包,里面存放不同的环境文件,里面包含:pro.env.js(生产环境配置),uat.env.js(测试环境配置),dev. ...
- YUM仓库的搭建方式
搭建YUM仓库 通俗的讲,实际上就是创建一个链接,将一堆可用于Linux系统安装的数据包用一种链接的方式给Linux系统读取,方法步骤如下: 一.找到可用的yum软件包的位置 二.创建挂载点提供访问y ...
- 解决(Missing artifact com.oracle:ojdbc14:jar:11.2.0.4.0)
maven项目检索时报Missing artifact com.oracle:ojdbc14:jar:11.2.0.4.0 经过查阅资料知道原因为: Oracle 的 ojdbc.jar 是收费的,M ...
- jQuery Validate (摘自官网)
jQuery Validate 插件为表单提供了强大的验证功能,让客户端表单验证变得更简单,同时提供了大量的定制选项,满足应用程序各种需求.该插件捆绑了一套有用的验证方法,包括 URL 和电子邮件验证 ...