# Wordpress+Mysql+nginx反向代理安装

## 步骤1：配置mysql容器

首先创建`db`目录，下面添加一个mysql容器使用的`env.list`文件

```
MYSQL_DATABASE=wpdb
MYSQL_USER=wpuser
MYSQL_PASSWORD=wppass
MYSQL_RANDOM_ROOT_PASSWORD=1
```

然后启动mysql容器：

```
docker run --name db -d --net net1 -v $(pwd)/db/data:/var/lib/mysql --env-file ./db/env.list mysql:5.7
```

mysql跑起来了：

```
root@09-1:/simon-testing/wordpress# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                 NAMES
d512e5e68e6e        mysql:5.7           "docker-entrypoint.s…"   4 seconds ago       Up 3 seconds        3306/tcp, 33060/tcp   db
```

## 步骤2：配置wordpress容器

拉取wordpress镜像，这个镜像里已经自带apache和php7.2：

`docker pull wordpress:5-php7.2`

创建wp目录，下面添加一个wordpress容器使用的`env.list`文件，注意`WORDPRESS_DB_HOST`要与mysql的容器名一致：

```
WORDPRESS_DB_HOST=db
WORDPRESS_DB_USER=wpuser
WORDPRESS_DB_PASSWORD=wppass
WORDPRESS_DB_NAME=wpdb
```

启动wordpress容器，把80端口绑定到宿主机的8080端口上：

```
docker run --name wp -p 8080:80 --net net1 -d --env-file ./wp/env.list wordpress:5-php7.2
```

之后，在其他主机上用浏览器访问宿主机的8080端口，就能看到wordpress的安装引导界面了：

![](/files/-M5geLOOtzgGglxqml35)

## 步骤3：配置nginx反向代理容器

创建`nginx`目录，下面添加一个nginx容器使用的`default.conf`文件，里面设置反向代理`wp`容器：

```
server {
    listen       80;
    server_name  localhost;
    access_log  /var/log/nginx/host.access.log  main;
    location / {
        #root   /usr/share/nginx/html;
        index  index.php index.html index.htm;
        proxy_pass http://wp/;
        #Proxy Settings
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}
```

然后运行nginx容器，link到wp容器，并把宿主机80端口与nginx容器80端口绑定：

```
docker run --name nginx -d -v $(pwd)/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro --link wp --net net1 -p 80:80 nginx:alpine
```

三个容器一起运行中：

```
CONTAINER ID        IMAGE                COMMAND                  CREATED             STATUS              PORTS                  NAMES
e160335b6070        nginx:alpine         "nginx -g 'daemon of…"   56 seconds ago      Up 54 seconds       0.0.0.0:80->80/tcp     nginx
1e0276d9a234        mysql:5.7            "docker-entrypoint.s…"   19 minutes ago      Up 19 minutes       3306/tcp, 33060/tcp    db
80f68202f960        wordpress:5-php7.2   "docker-entrypoint.s…"   25 minutes ago      Up 25 minutes       0.0.0.0:8080->80/tcp   wp
```

现在访问宿主机，不用添加8080端口也能访问到wordpress了：

![](/files/-M5ge7EgPkUX4etFf1VS)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://maxidea.gitbook.io/k8s-testing/dan-ji-ce-shi/wordpress-mysql-nginx-installation.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
