• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 自建wordpress容器
    1. 1.1. 尝试启动一个php-apache容器
    2. 1.2. 安装wordpress
    3. 1.3. 运行mysql容器
    4. 1.4. 添加mysqli扩展
    5. 1.5. 运行php-with-mysql
  2. 2. 使用wordpress官方镜像

3.3、Docker(3)-部署wordpress实践

2018-02-10 22:38:32
总字数 934
预计阅读时间 3 分钟

站在 Docker 的角度,软件就是容器的组合:业务逻辑容器、数据库容器、储存容器、队列容器……Docker 使得软件可以拆分成若干个标准化容器,然后像搭积木一样组合起来。

这正是微服务(microservices)的思想:软件把任务外包出去,让各种外部服务完成这些任务,软件本身只是底层服务的调度中心和组装层。

微服务

微服务很适合用 Docker 容器实现,每个容器承载一个服务。一台计算机同时运行多个容器,从而就能很轻松地模拟出复杂的微服务架构。

应用解耦

现在尝试实践搭建一个wordpress的服务
这是一个php编写的博客系统

运行需要依赖的环境有 : mysql php apache
当然也包括php的扩展包mysqli , 用于实现mysql数据库的连接

自建wordpress容器

尝试启动一个php-apache容器

创建应用目录 php-demo , 然后进入该目录执行

1
2
3
4
5
6
docker container run \
-d \
--rm \
--name wordpress \
--volume "$PWD/":/var/www/html \
php:7.2-apache

linux当中 , 命令末尾的\代表换行继续输入命令 , 而不立即执行

  • -d : 容器在后台运行 , 输出内容不会打印到终端(可以用docker logs [ContainerId]查看)
  • --rm : 容器运行停止后 , 自动删除容器文件
  • --name : 指定容器的名字
  • --volume : 指定目录映射 , 这里表示把当前目录映射到容器内的/var/www/html目录
    这个目录是apache服务器对外访问的默认目录
    这样我们就可以直接在当前目录中添加php页面文件进行访问

成功从远程仓库下载php:7.2-apache镜像并启动容器之后
会提示容器对外访问的IP地址 , 比如172.17.0.2 , 可以直接访问这个地址

但是此时还没有在访问目录中添加php页面
可以写个测试页面index.php

1
2
3
<?php
phpinfo();
?>

此时再访问就可以看到php信息了

安装wordpress

删掉index.php
官网下载wordpress安装包 , 直接解压到该目录下
然后访问就可以看到wordpress的初始化页面了
wordpress_init
但是目前还没有mysql的容器

运行mysql容器

1
2
3
4
5
6
7
docker container run \
-d \
--rm \
--name wordpressdb \
--env MYSQL_ROOT_PASSWORD=123456 \
--env MYSQL_DATABASE=wordpress \
mysql:5.7

env代表向容器中传入的环境变量 , 容器中的mysql会根据环境变量创建数据库以及设置root用户的密码

添加mysqli扩展

PHP 的官方 image 不带有 mysqli 扩展,必须自己新建一个image

新建Dockerfile文件

1
2
3
FROM php:7.2-apache
RUN docker-php-ext-install mysqli
CMD apache2-foreground

打包镜像时安装mysqli的扩展 , 运行容器时启动apache
之后构建image

1
docker build -t php-with-mysql .

运行php-with-mysql

1
2
3
4
5
6
docker container run \
-d \
--rm \
--volume "$PWD/":/var/www/html \
--link wordpressdb:mysqlhost \
php-with-mysql

link是实现容器之间通信的一种机制 , 表示该容器要链接到wordpressdb容器 , 冒号表示该容器主机的名称是mysqlhost
(之后配置数据库连接时 , 主机名称不是localhost , 而是mysqlhost)

由于wordpress在运行时需要写入配置文件( 也包括自身版本的更新 )
我们可以给当前目录添加写权限

1
chmod -R 777 ./

之后再访问172.17.0.2 , 填写数据库配置信息即可完成

使用wordpress官方镜像

首先仍然是要启动mysql的容器 , 参考上面的运行mysql容器
然后使用wordpress的官方镜像构建容器

1
2
3
4
5
6
7
docker container run \
-d \
--rm \
--name wordpress \
--env WORDPRESS_DB_PASSWORD=123456 \
--link wordpressdb:mysqlhost \
wordpress

环境变量WORDPRESS_DB_PASSWORD是 MySQL 容器的根密码
运行之后的访问和初始化操作和前一种方式相同

  • linux
  • docker
  • linux

扫一扫,分享到微信

6.0、复制集
3.2、Docker(2)-使用技巧 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆