0.前言
- 非常感谢如下2篇文章的指导:
https://www.ruanyifeng.com/blog/2018/02/docker-wordpress-tutorial.html
https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html - 由于MacOS与常规的CentOS使用docker上还是有些差别,特地把Mac上3种方式安装WordPress开源软件的方式也梳理下如下(经本人实测通过)。
如有不清楚的,或者还是不明白MacOS的网络配置的,可以联系本人。到时我再专题写下相关文档。由于时间仓促,遗漏之处请多提意见。
1.自建docker镜像安装wordpress:
-
创建并进入目录:
mkdir docker-demo && cd docker-demodocker container run \ -d \ -p 8686:80 \ --rm \ --name docker-demo \ --volume "$PWD/":/var/www/html \ php:5.6-apache备注:
-d:deamon方式运行
-p:宿主机和容器的端口映射关系
--rm:停止运行后,自动删除容器文件。
--name:容器的名字。
--volume "$PWD/":/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)
php:5.6-apache:装PHP-5.6,并且自带Apache服务器。因为不考虑修改容器内的任何配置,容器内就只能用80端口映射(apache服务器默认暴露的端口),否则就需要更改容器内的apache服务器端口 -
在宿主机的
docker-demo目录下,新建index.php文件,内容如下:<?php phpinfo(); ?>在宿主机上打开浏览器,访问
http://localhost:8686/index.php,显示效果如下:PHP Version 5.6.40 ... -
使用浏览器或wget命令从wordress中下载最新版的安装包:
https://cn.wordpress.org/latest-zh_CN.tar.gz,并解压缩至docker-demo目录; -
新建数据库容器:
docker container run \ -d \ -p 23306:3306 \ --rm \ --name wordpressdb-demo \ --env MYSQL_ROOT_PASSWORD=123456 \ --env MYSQL_DATABASE=wordpress-demo \ mysql:5.7 -
新建Dockerfile文件:
FROM php:5.6-apache RUN docker-php-ext-install mysqli CMD apache2-foreground -
执行命令构建docker的image文件:
phpwithmysql:docker build -t phpwithmysql . -
运行docker-demo的docker镜像:
docker container run \ -d \ -p 8989:80 \ --rm \ --name docker-demo \ --volume "$PWD":/var/www/html \ --env WORDPRESS_DB_HOST=wordpress-demo:3306 \ --env WORDPRESS_DB_USER=root \ --env WORDPRESS_DB_PASSWORD=123456 \ --link wordpressdb-demo:wordpress-demo \ phpwithmysql -
设置wordpress目录可读写:
chmod -R 777 wordpress
- 打开
http://localhost:8989/wordpress可以访问到指定版本的wordpress。
2.拉官方的镜像方式安装wordpress:
-
运行基于mysql的wordpress数据库镜像:
docker container run \ -d \ -p 13306:3306 \ --rm \ --name wordpressdb \ --env MYSQL_ROOT_PASSWORD=123456 \ --env MYSQL_DATABASE=wordpress \ mysql:5.7 -
运行wordpress并关联数据库:
docker container run \ -d \ -p 8787:80 \ --rm \ --name wordpress \ --env WORDPRESS_DB_HOST=mysql:3306 \ --env WORDPRESS_DB_USER=root \ --env WORDPRESS_DB_PASSWORD=123456 \ --link wordpressdb:mysql \ --volume "$PWD/wordpress":/var/www/html \ wordpress注意:mac 与docker desktop for mac内的容器是无法直接访问的
mac把内部的172.0.0.1(docker desktop的网络ip)映射到了本机的0.0.0.0,在mac中可以直接ping通;
wordpress在容器的ip为172.17.0.3在mac中是无法ping通的,加上上面的端口映射即可解决-p 8787:80,即mac不访问172.x,但是访问127.0.0.1:8787端口时,就通过本机路由至172.17.0.1(docker desktop),172.17.0.1把请求转发到了docker 容器172.17.0.3;在宿主机上打开浏览器,访问
http://localhost:8787即可打开wordpress web应用:注意 docker-demo和wordpress都是使用的内置的apache服务器,都指向了docker的80端口,但是他们是不同的容器,对应不同的内网IP(如:172.17.0.3:80/172.17.0.4:80),所以通过宿主机的不端口是可以映射过去的
-
查看容器xxx的配置信息
docker container inspect wordpress
3.通过docker compose定制安装wordpress
-
使用docker-compose命令查看版本号:
docker-compose -v -
构建compose yml配置文件,文件名就叫
docker-compose.yml:version: "3.3" services: db: image: mysql:5.7 ports: - "33306:3306" volumes: - ./mysql:/var/lib/mysql restart: always container_name: mysql-db environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wordpress-db MYSQL_USER: wordpress MYSQL_PASSWORD: 654321 wordpress: depends_on: - db image: wordpress:latest ports: - "8383:80" restart: always container_name: wordpress environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: 654321 WORDPRESS_DB_NAME: wordpress-db volumes: - ./wordpress:/var/www/html
尤其要注意yml文件的格式规范,建议在idea中格式化后再拷贝至docker-compose.yml中(yml规范是子属性缩进2个空格)。
- 执行
docker-compose up命令即可启动wordpress及依赖的mysql服务,默认是前端进程启动,停止显示进程,则服务被杀掉。 - 执行
docker-compose up -d命令守护进程启动wordpress及依赖的mysql服务。 - 执行
docker-compose stop命令即可停止wordpress及依赖的mysql服务,但是里面的数据还在。 - 执行
docker-compose rm命令即可停止wordpress及依赖的mysql服务。
4.常用docker命令
-
Docker默认使用bridge模式启动容器服务,使用
docker network inspect bridge命令查看bridge模式网络信息。 -
运行镜像:
docker container run hello-world -
删除镜像:
docker rmi 383b67197e7c -
强制删除镜像:
docker rmi --force 383b67197e7c -
查询运行的容器:
docker container ls或者docker ps -
停止容器
docker stop 383b67197e7c -
进入容器:
docker exec -it 59b15dc84fa6 /bin/bash
文章详细介绍了在MacOS系统中使用Docker安装WordPress的三种方法:1)自建docker镜像,2)拉取官方镜像,3)通过docker-compose定制安装。每种方法都涉及到了Docker镜像、容器、数据库配置以及端口映射等技术细节。
7320

被折叠的 条评论
为什么被折叠?



