基于Docker 搭建 wordpress

在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护。

首先需要将centos 镜像pull到本地,并搭建本地yum仓库

yum仓库地址:http://192.168.2.11:8000  这里使用阿里yum和163yum都可以。

[[email protected] test]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              904d6c400333        4 weeks ago         196.7 MB

编写Dockerfile文件

[[email protected] 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文件

[[email protected] web-Dockerfile]# docker build -f Dockerfile -t web:centos7 .
...
...
Step 6 : EXPOSE 80
 ---> Running in cd581ad95fb0
 ---> 368d9fc0b1ce
Removing intermediate container cd581ad95fb0
Step 7 : 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时,要简练。

通过生成的镜像文件运行一个容器

[[email protected] web-Dockerfile]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
web                 centos7             07d76f84111c        2 minutes ago       268 MB
docker.io/centos    latest              904d6c400333        4 weeks ago         196.7 MB
[[email protected] web-Dockerfile]# docker run -d -p 80:80 -v /myweb/:/var/www/html/ --name web web:centos7   # -v 本机目录/myweb 挂载到容器内的/var/www/html目录

通过查看,我们已经成功的创建了一个web容器。

[[email protected] web-Dockerfile]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
7d5c54ba0cf1        web:centos7         "/usr/sbin/httpd -f /"   11 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp   web
[[email protected] web-Dockerfile]# docker port web
80/tcp -> 0.0.0.0:80

测试访问:
http://192.168.2.11

web 服务已经搭建完毕,接下来是MySQL

编写Dockerfile文件,CMD运行的mysql.sh脚本,需要我们手动编写。这里开通ssh服务,方便对于数据库的管理工作

[[email protected] mysql-Dockerfile]# vim Dockerfile 

  1 FROM centos
  2 MAINTAINER hukey
  3 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 脚本内容

[[email protected] mysql-Dockerfile]# vim mysql.sh 

  1 #!/bin/bash
  2 # Author:hukey
  3 mysqld_safe &
  4 sleep 5
  5 mysqladmin -uroot password ‘123456‘
  6 mysql -uroot -p123456 -e "GRANT ALL ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘123456‘;FLUSH PRIVILEGES;"
  7 sed -i ‘s/UsePAM yes/UsePAM no/g‘ /etc/ssh/sshd_config && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  8 echo 123456 | passwd --stdin root
  9 /usr/sbin/sshd -D

尝试生成镜像

[[email protected] mysql-Dockerfile]# docker build -f Dockerfile -t mariadb:centos7 .
[[email protected] mysql-Dockerfile]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mariadb             centos7             49b88fcfb709        29 seconds ago      367.8 MB

生成完成,尝试启动容器

[[email protected] mysql-Dockerfile]# docker run -d -p 20002:22 --name db mariadb:centos7
[[email protected] mysql-Dockerfile]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                             NAMES
c0988d8c8eb2        mariadb:centos7     "/mysql.sh"              7 seconds ago       Up 6 seconds        3306/tcp, 0.0.0.0:20002->22/tcp   db

通过ssh服务连接到容器

[[email protected] mysql-Dockerfile]# ssh 192.168.2.11 -p 20002
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:83:03:48:1e:51:77:25:37:20: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.
[email protected]192.168.2.11‘s password:
[[email protected] ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, 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               |
+--------------------+
4 rows in set (0.00 sec)

现在web容器和mariadb容器已经搭建完毕,接下来就需要将它们关联在起来

[[email protected] mysql-Dockerfile]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                             NAMES
c0988d8c8eb2        mariadb:centos7     "/mysql.sh"              2 minutes ago       Up 2 minutes        3306/tcp, 0.0.0.0:20002->22/tcp   db
7d5c54ba0cf1        web:centos7         "/usr/sbin/httpd -f /"   58 minutes ago      Up 58 minutes       0.0.0.0:80->80/tcp                web
[[email protected] mysql-Dockerfile]# docker stop web
web
[[email protected] mysql-Dockerfile]# docker rm web
web

测试是否能够访问到mysql容器

[[email protected] mysql-Dockerfile]# docker run -it -p 80:80 --link=db --name web web:centos7 /bin/bash

[[email protected] /]# yum install mariadb -y
[[email protected] /]# mysql -uroot -p123456 -h db
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, 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               |
+--------------------+
4 rows in set (0.00 sec)

连接mysql容器成功。

再次创建后台运行的web容器

[[email protected] web-Dockerfile]# docker run -d -p 80:80 -v /myweb/:/var/www/html/ --link=db:todb --name=web web:centos7
[[email protected] web-Dockerfile]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                             NAMES
4a36ee3781da        web:centos7         "/usr/sbin/httpd -f /"   8 seconds ago       Up 7 seconds        0.0.0.0:80->80/tcp                web
50dba9d34f51        mariadb:centos7     "/mysql.sh"              9 minutes ago       Up 9 minutes        3306/tcp, 0.0.0.0:20002->22/tcp   db

安装wordpress web程序

[[email protected] myweb]# cp -a /root/wordpress/* /myweb/

浏览器访问

登录数据库容器,创建wordpress所需数据库。

[[email protected] myweb]# ssh 192.168.2.11 -p 20002
[email protected]192.168.2.11‘s password:
[[email protected] ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 6
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, 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, 1 row affected (0.09 sec)

MariaDB [(none)]> GRANT ALL ON wordpress.* TO ‘wordpress‘@‘%‘ IDENTIFIED BY ‘wordpress‘;
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

MariaDB [(none)]> Bye

到此,基于Docker lamp平台的wordpress搭建成功。

如果是在生产环境中使用docker,不太建议将数据库程序存放与docker内执行。建议MySQL 实现负载或者冗余。

时间: 2024-10-07 23:25:59

基于Docker 搭建 wordpress的相关文章

基于docker搭建wordpress博客网站平台

WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的.用户可以在支持 PHP 和 MySQL数据库的服务器上使用自己的博客. WordPress有许多第三方开发的免费模板,安装方式简单易用.不过要做一个自己的模板,则需要你有一定的专业知识.比如你至少要

基于Docker搭建ActiveMQ的高可用集群

最近刚开始玩Docker和ActiveMQ刚好学习到ActiveMQ集群的搭建,就将其记录了下来给有需要的人,也可以跟大家交流交流. 这里先感谢慕课网和http://blog.csdn.net/lifetragedy/article/details/51869032,在学习ActiveMQ有很大的帮助. 一.docker坏境的搭建. 这里重点不是docker,而是基于docker搭建的ActiveMQ集群,docker了解的也可以参考http://www.docker.org.cn/.     

基于Docker搭建大数据集群(六)Hive搭建

基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spark做解析引擎的,存储还是用的HDFS 我是在docker里面搭建的集群,所以都是基于docker操作的 一.安装包准备 Hive官网下载 微云下载 | 在 tar 目录下 二.版本兼容 我使用的相关软件版本 Hadoop ~ 2.7.7 Spark ~ 2.4.4 JDK ~ 1.8.0_221 S

基于Docker搭建大数据集群(七)Hbase部署

基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cluster-master yes no cluster-slave1 backup yes cluster-slave2 no yes cluster-slave3 no yes 四.配置修改 hbase-env.sh export JAVA_HOME=/opt/jdk/jdk1.8.0_221 h

基于Docker搭建大数据集群(一)Docker环境部署

本篇文章是基于Docker搭建大数据集群系列的开篇之作 主要内容 docker搭建 docker部署CentOS 容器免密钥通信 容器保存成镜像 docker镜像发布 环境 Linux 7.6 一.Docker安装 安装工具包 bash yum install -y yum-utils #安装工具包,缺少这些依赖将无法完成 设置远程仓库 bash yum-config-manager --add-repo https://download.docker.com/linux/centos/dock

基于Docker搭建分布式消息队列Kafka

本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的示例包含Zookeeper + Kafka + Kafka-manger #获取镜像 ·         zookeeper镜像:zookeeper:3.4.9 ·         kafka镜像:wurstmeister/kafka:0.10.2.0 ·         kafka-manager

用Docker搭建WordPress博客

[TOC] 前言 本文基于Centos 7 环境的docker搭建操作,centos 7 用 firewalld 替换了iptables作为默认防火墙操作,但以前习惯了iptables 就不与时俱进了. 环境准备 systemctl disable firewalld systemctl stop firewalld setenforce 0 sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config yum

Docker 搭建 WordPress

docker pull mysql:5.6.44 docker pull wordpress docker run -d --name wp-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.6.44 docker run -d --name wp --link wp-mysql:mysql -p 80:80 wordpress docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS

记录一次基于docker搭建jira实战

背景:项目需要选择不同测试平台,筛选一个最佳平台 现状:一台机器安装多套环境,虚拟机太繁琐 解决方案:通过Docker模拟安装测环境 1.pull docker 镜像: jira:7.11.1(目前的最新版本) mysql:5.7 docker pull cptactionhank/atlassian-jira-software docker pull mysql:5.7 2.启动mysql docker实例 docker run --name atlassian-mysql --restart