本文由ilanniweb微信公众号提供友情赞助,首发于烂泥行天下
jenkins技术分享QQ群:571981257
在《烂泥:wordpress迁移到docker》这篇文章中,wordpress镜像包含了apache、php、php-fpm等功能。
但是为了能单独使用nginx,所以我们需要把wordpress镜像进行拆分。
nginx镜像使用的是nginx:alpine这个tag,wordpress使用的是wordpress:fpm-alpine这个tag。
下面我们就直接贴出docker-compose.yml文件,如下:
cat docker-compose.yml
mysqldb:
image: mysql:latest
container_name: ilanni_mysql
restart: always
ports:
– "3306:3306"
volumes:
– ./data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: ilanni
MYSQL_USER: wwwilanni
MYSQL_PASSWORD: 123456
wordpress_php:
image: wordpress:fpm-alpine
container_name: ilanni_wordpress
restart: always
environment:
WORDPRESS_DB_HOST: mysqldb:3306
WORDPRESS_DB_NAME: ilanni
WORDPRESS_DB_USER: wwwilanni
WORDPRESS_DB_PASSWORD: 123456
volumes:
– ./wordpress:/var/www/html
links:
– mysqldb
web:
image: nginx:alpine
restart: always
ports:
– "80:80"
container_name: ilanni_nginx
volumes:
– ./wordpress:/var/www/html
– ./ ilanni.com.conf:/etc/nginx/conf.d/ilanni.com.conf
links:
– wordpress_php
对于这个docker-compose文件中,我们定义了mysqldb、wordpress_php和web,这三个docker容器。
其中wordpress_php这个容器对外映射的wordpress目录是可以随便定义的,但是容器里面的/var/www/html目录不是随便定义的,这个是wordpress程序存在的目录。
在web容器中对外映射的wordpress目录是根据wordpress_php这个容器定义的,在使用时,我们只需要和wordpress_php这个容器对外映射的目录保持一致即可。
除此之外,我们还把本地的ilanni.com.conf这个nginx配置文件,映射到web容器里面。如果我们还有其他域名的话,我们也可以在次添加新的配置文件。
现在我们再来看看ilanni.com.conf这个nginx配置文件,其内容如下:
cat ilanni.com.conf
server {
listen 80;
server_name www.ilanni.com;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress_php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
在ilanni.com.conf这个nginx配置文件中的root,其实就是wordpress_php容器中wordpress程序所在的目录/var/www/html。
除此之外我们还需要关注下wordpress_php:9000中的wordpress_php,是表示web容器的nginx要连接wordpress_php容器的9000端口。其实就是为了连接fpm,配置使用。
未经允许不得转载:烂泥行天下 » 烂泥:wordpress的docker镜像拆分