Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像
一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像。
很多时候,公司要求的镜像并不一定符合dockerhub仓库里面的镜像,这时候我们就要自己构建镜像了,通过编辑dockerfile文件,来实现我们对镜像的要求。
无论是服务器更换或者是增加新的网站节点,只要把这个镜像放进私有仓库,新的服务器拉取到自己本地就可以使用,是不是很方便呢?
因为很多公司的网站平台是基于php语言来写的,我就举个例子:
构建一个wordpress的php网站环境的镜像。
镜像构成:Httpd、MySQL、PHP、wordpress。
首先呢,先写一个简单的控制脚本:
[root@smbands~]#vi start.sh service httpd start #开启httpd服务。 service mysqld start #开启MySQL。 mysqladmin -uroot -p $MYSQL_ROOT_PASSWORD 更改默认MySQL登录密码。 tail -f #持续运行
编写Dockerfile文件
[root@smbands~]#vi Dockerfile #创建一个空Dockerfile文件。 FROM centos: #基于哪个操作系统 MAINTAINER Smbands #作者名称 RUN yum -y install httpd php php-gd php-mysql mysql mysql-server #使用yum安装一些必要的服务。 ENV MYSQL_ROOT_PASSWORD #使用变量给MySQL设置密码。 RUN echo "" > /var/www/html/index.php #创建php测试页。 ADD start.sh /start.sh #添加一个sh脚本。 RUN chmod +x /start.sh #给脚本赋予可执行权限。 ADD wordpress--zh_CN.tar.gz /var/www/html #将wordpress压缩包下载到本地,并解压到/var/www/html目录。 COPY wp-config-simple.php wp-config.php #将wordpress解压后的wp-config-simple.php文件复制一份重命名为wp-config.php。 COPY wp-config.php /var/www/html/wordpress #将文件拷贝到网站发布路径。 VOLUME ["/var/lib/mysql"] #将MySQL数据库目录挂载到容器。 CMD /start.sh #执行脚本 EXPOSE #开放 和3306端口
构建镜像容器
[root@smbands~]#docker build -t wordpress:v1 Dockerfile的路径 #说明一下 -t 给镜像命名 wordpress:v1 镜像名:TAG 。
等10分钟左右的时间镜像就可以构建完成。
然后你可以在镜像列表里面看到你构建的wordpress:v1的镜像
[root@smbands~]#docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress v1 29364aa4074d About an hour ago MB
启动镜像
[root@smbands~]# docker run -itd --name wordpress -p : wordpress:v1 [root@smbands~]#docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES fe55c05eb309 wordpress:v1 ->/tcp, /tcp wordpress
启动容器后打开浏览器访问宿主机的IP就可以看到效果了。
把镜像放到私有仓库,今后的工作中,如果公司服务器新增节点或者更换服务器,直接将镜像拉取过来就可以直接使用了。
Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像的更多相关文章
- Docker学习(六)Dockerfile构建自定义镜像
Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...
- Docker在Centos下使用Dockerfile构建远程Tomcat和Jenkins镜像
镜像构建准备环境原料 构建CentOS Docker tomcat镜像 Dockerfile文件内容: FROM centos:latest MAINTAINER boonya <boonya@ ...
- Docker中使用多阶段Dockerfile构建容器镜像image(镜像优化)
使用多阶段构建 预计阅读时间: 6分钟 多阶段构建是守护程序和客户端上需要Docker 17.05或更高版本的新功能.多阶段构建对于那些努力优化Dockerfiles同时使其易于阅读和维护的人来说非常 ...
- Docker笔记(五):整一个自己的镜像
原文地址:http://blog.jboost.cn/2019/07/17/docerk-5.html 获取镜像的途径有两个,一是从镜像仓库获取,如官方的Docker Hub,二是自定义.上文已经介绍 ...
- docker dockerfile构建自己的tomcat镜像
文件 1.apache-tomcat-8.5.24.tar.gz, jdk-8u151-linux-x64.tar.gz Dockerfile文件: FROM centosWORKDIR /usrCO ...
- Docker自学纪实(六)搭建docker私有仓库
docker的镜像仓库分两种:一种是从官方公有仓库拉取:还有就是自己搭建私有仓库.官方的镜像仓库是面对整个应用市场的:私有仓库一般用于公司内部,就是公司项目自身所需的镜像.搭建私有仓库有什么好处?私有 ...
- Docker自学纪实(四)搭建LNMP部署wordpress
我们在工作中最常用的就是LNMP网站平台 这个架构呢,是整个公司网站的核心 如果对于访问量较小的网站,可以直接在服务器上面部署 而如果是访问量很大的网站,那负载就是个很大的问题. 要么需要再买很多服务 ...
- Docker自学纪实(三)Docker容器数据持久化
谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...
- Docker自学纪实(二)Docker基本操作
安装docker 以CentOS7为例: 安装:yum -y install docker 启动:systemctl start docker 设置开机自启:systemctl enable dock ...
随机推荐
- ThinkPHP 统计数据(数字字段)更新 setInc 与 setDec 方法
ThinkPHP 统计数据更新 ThinkPHP 内置了对统计数据(数字字段)的更新方法: setInc():将数字字段值增加 setDec():将数字字段值减少 setInc() ThinkPHP ...
- Hadoop学习笔记(3) Hadoop I/O
1. HDFS的数据完整性 HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和.datanode负责在验证收到的数据后存储数据及其校验和.正在写数据的客户端将数据及其校验和发送到由一系列d ...
- Linux Bird
o / : 2GB o /boot: 200MB o /usr : 4GB o /var : 2GB o /tmp : 1GB o swap : 1GB o /home: 5GB,并且使用 LVM 模 ...
- Jersey框架简介
一 Jersey简介 开发RESTful WebService意味着支持在多种媒体类型以及抽象底层的客户端-服务器通信细节,如果没有一个好的工具包可用,这将是一个困难的任务 为了简化使用JAVA开发R ...
- HDU 1281——棋盘游戏——————【最大匹配、枚举删点、邻接表方式】
棋盘游戏 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- MyEclipse项目中的文件点击右键Team选项中没有提交到SVN中的选项是怎么回事
MyEclipse项目中的文件点击右键Team选项中没有提交到SVN中的选项是怎么回事 其实你已经可以百度到很多方法: 例如下面博客提供的 http://www.xuebuyuan.com/95285 ...
- MyBatis之会话Session原理
MyBatis 之会话 Session 执行逻辑 1.SQL 会话工厂构建器类 SqlSessionFactoryBuilder 的 build 方法用于构建 SqlSessionFactory 类的 ...
- 《Cron表达式详解》
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month ...
- Python开发环境Wing IDE的Blender的Python代码调试技巧
Wing IDE是一个集成开发环境,可用于开发.测试和调试为Blender编写的Python代码,Blender是一个开源的3 D内容创建系统.Wing IDE提供自动完成.调用提示.强大的调试器.以 ...
- Android @1x,@2x,@3x 资源文件自动分包工具
version 1.2 1.修改不用输入扩展名 2.输出路径可选.默认会在输入路径下建文件夹 前沿: 现在开发中ios,android会使用一套图,但是ui设计师给的图命名是以@1x,@2x,@3x这 ...