基于Docker 搭建 wordpress
在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护。
首先需要将centos 镜像pull到本地,并搭建本地yum仓库
yum仓库地址:http://192.168.2.11:8000 这里使用阿里yum和163yum都可以。
[root@node1 test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 904d6c400333 weeks ago 196.7 MB
编写Dockerfile文件
[root@node1 web-Dockerfile]# vim Dockerfile FROM centos
MAINTAINER hukey
RUN rm -rf /etc/yum.repos.d/*
RUN echo -e "[yum]\nname = yum\ngpgcheck = 0\nbaseurl = http://192.168.2.11:8000" > /etc/yum.repos.d/yum.repo
RUN yum install httpd php php-mysql php-mbstring -y && yum clean all
EXPOSE 80
CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"]
尝试执行Dockerfile文件
[root@node1 web-Dockerfile]# docker build -f Dockerfile -t web:centos7 .
...
...
Step : EXPOSE
---> Running in cd581ad95fb0
---> 368d9fc0b1ce
Removing intermediate container cd581ad95fb0
Step : CMD /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DFOREGROUND
---> Running in 34e0a903d8b5
---> 07d76f84111c
Removing intermediate container 34e0a903d8b5
Successfully built 07d76f84111c
docker每执行完成一行RUN 语句就会生成一个镜像文件,如果还有RUN指令执行,就会删除原来的镜像文件,并创建一个新的镜像文件,因此在编写Dockerfile时,要简练。
通过生成的镜像文件运行一个容器
[root@node1 web-Dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web centos7 07d76f84111c minutes ago MB
docker.io/centos latest 904d6c400333 weeks ago 196.7 MB
[root@node1 web-Dockerfile]# docker run -d -p : -v /myweb/:/var/www/html/ --name web web:centos7 # -v 本机目录/myweb 挂载到容器内的/var/www/html目录
通过查看,我们已经成功的创建了一个web容器。
[root@node1 web-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d5c54ba0cf1 web:centos7 "/usr/sbin/httpd -f /" seconds ago Up seconds 0.0.0.0:->/tcp web
[root@node1 web-Dockerfile]# docker port web
/tcp -> 0.0.0.0:
测试访问:
http://192.168.2.11

web 服务已经搭建完毕,接下来是MySQL
编写Dockerfile文件,CMD运行的mysql.sh脚本,需要我们手动编写。这里开通ssh服务,方便对于数据库的管理工作
[root@node1 mysql-Dockerfile]# vim Dockerfile FROM centos
MAINTAINER hukey
RUN rm -rf /etc/yum.repos.d/* && echo -e "[yum]\nname = yum\ngpgcheck = 0\nbaseurl = http://192.168.2.11:8000" > /etc/yum.repos.d/yum.repo
4 RUN yum install mariadb-server openssh-server -y && yum clean all
5 RUN mysql_install_db && chown -R mysql:mysql /var/lib/mysql/
6 VOLUME /var/lib/mysql/
7 ADD mysql.sh /mysql.sh
8 RUN chmod 755 /mysql.sh
9 EXPOSE 22
10 EXPOSE 3306
11 CMD ["/mysql.sh"]
mysql.sh 脚本内容
[root@node1 mysql-Dockerfile]# vim mysql.sh #!/bin/bash
# Author:hukey
mysqld_safe &
sleep
mysqladmin -uroot password ''
mysql -uroot -p123456 -e "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '123456';FLUSH PRIVILEGES;"
sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
echo | passwd --stdin root
/usr/sbin/sshd -D
尝试生成镜像
[root@node1 mysql-Dockerfile]# docker build -f Dockerfile -t mariadb:centos7 .
[root@node1 mysql-Dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb centos7 49b88fcfb709 seconds ago 367.8 MB
生成完成,尝试启动容器
[root@node1 mysql-Dockerfile]# docker run -d -p : --name db mariadb:centos7
[root@node1 mysql-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0988d8c8eb2 mariadb:centos7 "/mysql.sh" seconds ago Up seconds /tcp, 0.0.0.0:->/tcp db
通过ssh服务连接到容器
[root@node1 mysql-Dockerfile]# ssh 192.168.2.11 -p
The authenticity of host '[192.168.2.11]:20002 ([192.168.2.11]:20002)' can't be established.
RSA key fingerprint is 8c:c0:c0:a5:1e:0b::::1e::::::bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.2.11]:20002' (RSA) to the list of known hosts.
root@192.168.2.11's password:
[root@c0988d8c8eb2 ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec)
现在web容器和mariadb容器已经搭建完毕,接下来就需要将它们关联在起来
[root@node1 mysql-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0988d8c8eb2 mariadb:centos7 "/mysql.sh" minutes ago Up minutes /tcp, 0.0.0.0:->/tcp db
7d5c54ba0cf1 web:centos7 "/usr/sbin/httpd -f /" minutes ago Up minutes 0.0.0.0:->/tcp web
[root@node1 mysql-Dockerfile]# docker stop web
web
[root@node1 mysql-Dockerfile]# docker rm web
web
测试是否能够访问到mysql容器
[root@node1 mysql-Dockerfile]# docker run -it -p : --link=db --name web web:centos7 /bin/bash [root@f310c805bdfc /]# yum install mariadb -y
[root@f310c805bdfc /]# mysql -uroot -p123456 -h db
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec)
连接mysql容器成功。
再次创建后台运行的web容器
[root@node1 web-Dockerfile]# docker run -d -p : -v /myweb/:/var/www/html/ --link=db:todb --name=web web:centos7
[root@node1 web-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a36ee3781da web:centos7 "/usr/sbin/httpd -f /" seconds ago Up seconds 0.0.0.0:->/tcp web
50dba9d34f51 mariadb:centos7 "/mysql.sh" minutes ago Up minutes /tcp, 0.0.0.0:->/tcp db
安装wordpress web程序
[root@node1 myweb]# cp -a /root/wordpress/* /myweb/
浏览器访问

登录数据库容器,创建wordpress所需数据库。
[root@node1 myweb]# ssh 192.168.2.11 -p
root@192.168.2.11's password:
[root@50dba9d34f51 ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, row affected (0.09 sec) MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY 'wordpress';
Query OK, rows affected (0.03 sec) MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, rows affected (0.02 sec) MariaDB [(none)]> Bye


到此,基于Docker lamp平台的wordpress搭建成功。
如果是在生产环境中使用docker,不太建议将数据库程序存放与docker内执行。建议MySQL 实现负载或者冗余。
基于Docker 搭建 wordpress的更多相关文章
- 基于docker搭建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 【docker构建】基于docker构建wordpress博客网站平台
WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...
- 基于docker搭建开源扫描器——伏羲
基于docker搭建开源扫描器——伏羲 1.简介 项目地址 伏羲是一款开源的安全检测工具,适用于中小型企业对企业内部进行安全检测和资产统计. 功能一览: 基于插件的漏洞扫描功能(类似于巡风) 漏洞管理 ...
- Docker搭建wordpress博客环境(Centos7)
Docker搭建wordpress博客环境(Centos7) 升级系统 yum -y update 设置docker库 sudo yum install -y yum-utils sudo yum-c ...
- 基于Docker搭建大数据集群(六)Hive搭建
基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...
- 基于Docker搭建大数据集群(七)Hbase部署
基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cl ...
- 基于Docker搭建大数据集群(一)Docker环境部署
本篇文章是基于Docker搭建大数据集群系列的开篇之作 主要内容 docker搭建 docker部署CentOS 容器免密钥通信 容器保存成镜像 docker镜像发布 环境 Linux 7.6 一.D ...
- 基于Docker搭建分布式消息队列Kafka
本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...
- [转帖]基于docker 搭建Prometheus+Grafana
基于docker 搭建Prometheus+Grafana https://www.cnblogs.com/xiao987334176/p/9930517.html need good study 一 ...
随机推荐
- LeetCode 83 —— 删除排序链表中的重复元素
1. 题目 2. 解答 从前向后遍历链表,如果下一个结点的值和当前结点的值相同,则删除下一个结点,否则继续向后遍历. /** * Definition for singly-linked list. ...
- Cassandra 数据库设计
Cassandra 2.* CQL3.1 最近更新:2015-10-30 索引的设计 在Cassandra中经常会发现,索引不够用,不好用,各种不强大. 比如,我关注的人的需求uid + follow ...
- linux 下端口进程的查看
1.netstat -tunlp : 会显示所有端口和所有对应的程序 /netstat -tln:也可显示被占用的端口 netstat -tln 1.1 netstat -tunlp |gre ...
- Java语言课程设计
一.项目简介 本实验是对图形用户界面,布局管理器的综合应用,理解Java的处理机制,编写独立运行的窗口 二.项目采用技术 GUI,JAVA 三.功能需求分析 1.使用用户图形界面 2.能够实现年月份的 ...
- PokeCats开发者日志(七)
现在是PokeCats游戏开发的第十二天的晚上,很不幸提交到的三个平台(360开放平台,腾讯开放平台,华为应用市场)都没通过,著作权申请也被打回来了. 心中一万只草泥马在奔腾. 得了,看来 ...
- asp.net中的cookie
一.cookie导读,理解什么是cookie 1.什么是cookie:cookie是一种能够让网站服务器把少量数据(4kb左右)存储到客户端的硬盘或内存.并且读可以取出来的一种技术. 2.当你浏览某网 ...
- [C/C++] 智能指针学习
转自:http://blog.csdn.net/xt_xiaotian/article/details/5714477 一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存 ...
- BZOJ4537 HNOI2016最小公倍数(莫队+并查集)
考虑边只有一种权值的简化情况.那么当且仅当两点可以通过边权<=x的边连通,且连通块内最大边权为x时,两点间存在路径max为x的路径.可以发现两种权值是类似的,当且仅当两点可以通过边权1<= ...
- 计蒜客16492 building(二分线段树/分块)
题解: 考虑用线段树维护楼的最大值,然后这个问题就很简单了. 每次可以向左二分出比x高的第一个楼a,同理也可以向右二分出另一个楼b,如果a,b都存在,答案就是b-a-1. 注意到二分是可以直接在线段树 ...
- MFC 相关类、函数
timeSetEvent()函数 CRectTracker类的使用 SetLocalTime设置本地时间 AdjustTokenPrivileges启用权限