方法 A:自建 WordPress 容器
方法 B:采用官方的 WordPress 容器
方法 C:采用 Docker Compose 工具
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
$ sudo service docker restart
$ mkdir docker-demo && cd docker-demo
$ docker container run \
--rm \
--name wordpress \
--volume "$PWD/":/var/www/html \
php:5.6-apache
--rm:停止运行后,自动删除容器文件。
--name wordpress:容器的名字叫做wordpress。
--volume "$PWD/":/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)。因此,当前目录的任何修改,都会反映到容器里面,进而被外部访问到。
Forbidden
You don't have permission to access / on this server.
<?php
phpinfo();
?>
$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
$ tar -xvf wordpress-4.9.4-zh_CN.tar.gz
$ docker container run \
-d \
--rm \
--name wordpressdb \
--env MYSQL_ROOT_PASSWORD=123456 \
--env MYSQL_DATABASE=wordpress \
mysql:5.7
-d:容器启动后,在后台运行。
--rm:容器终止运行后,自动删除容器文件。
--name wordpressdb:容器的名字叫做wordpressdb
--env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码。
--env MYSQL_DATABASE=wordpress:向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库(本例是WordPress)。
$ docker container ls
$ docker container logs wordpressdb
$ docker container stop wordpress
FROM php:5.6-apache
RUN docker-php-ext-install mysqli
CMD apache2-foreground
$ docker build -t phpwithmysql .
$ docker container run \
--rm \
--name wordpress \
--volume "$PWD/":/var/www/html \
--link wordpressdb:mysql \
phpwithmysql
$ chmod -R 777 wordpress
数据库名:wordpress
用户名:root
密码:123456
数据库主机:mysql
表前缀:wp_(不变)
$ docker container stop wordpress wordpressdb
$ docker container run \
-d \
--rm \
--name wordpressdb \
--env MYSQL_ROOT_PASSWORD=123456 \
--env MYSQL_DATABASE=wordpress \
mysql:5.7
$ docker container run \
-d \
--rm \
--name wordpress \
--env WORDPRESS_DB_PASSWORD=123456 \
--link wordpressdb:mysql \
wordpress
$ docker container inspect wordpress
每次新建容器,返回的 IP 地址不能保证相同,导致要更换 IP 地址访问 WordPress。
WordPress 安装在容器里面,本地无法修改文件。
$ docker container stop wordpress
$ docker container run \
-d \
-p 127.0.0.2:8080:80 \
--rm \
--name wordpress \
--env WORDPRESS_DB_PASSWORD=123456 \
--link wordpressdb:mysql \
--volume "$PWD/wordpress":/var/www/html \
wordpress
-p 127.0.0.2:8080:80:将容器的 80 端口映射到127.0.0.2的8080端口。
--volume "$PWD/wordpress":/var/www/html:将容器的/var/www/html目录映射到当前目录的wordpress子目录。
$ docker container stop wordpress wordpressdb
# 启动所有服务
$ docker-compose up
# 关闭所有服务
$ docker-compose stop
$ docker-compose --version
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=123456
- MYSQL_DATABASE=wordpress
web:
image: wordpress
links:
- mysql
environment:
- WORDPRESS_DB_PASSWORD=123456
ports:
- "127.0.0.3:8080:80"
working_dir: /var/www/html
volumes:
- wordpress:/var/www/html
$ docker-compose up
$ docker-compose stop
$ docker-compose rm
How to Manually Build Docker Containers for WordPress[2],by Aleksander Koko
[How to Use the Official Docker WordPress Image[3],by Aleksander Koko
[Deploying WordPress with Docker[4],by Aleksander Koko
https://docs.docker.com/compose/install/#install-compose
https://www.sitepoint.com/how-to-manually-build-docker-containers-for-wordpress/
https://www.sitepoint.com/how-to-use-the-official-docker-wordpress-image/
https://www.sitepoint.com/deploying-wordpress-with-docker/