主机Nginx + Docker WordPress Mysql搭建的示例

2021-02-23 07:37:00 173
爱秀

这篇文章主要介绍了主机Nginx + Docker WordPress Mysql搭建的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

环境

  • Linux 3.10.0-693.el7.x86_64

  • Docker version 18.09.0

  • docker-compose version 1.17.0

安装

安装 docker 所需依赖

$sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2

安装 docker-ce

$sudoyum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo
$sudoyuminstalldocker-ce
$sudosystemctlstartdocker
$docker--version
$sudodockerrunhello-world

安装 docker-compose

$sudocurl-Lhttps://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname-s`-`uname-m`-o/usr/bin/docker-compose
$sudochmod+x/usr/bin/docker-compose
$docker-compose--version

编写 docker-compose.yml

$mkdir./blog
$cdblog
$sudovimdocker-compose.yml
version:'3'

services:
db:
image:mysql:5.7
volumes:#数据卷,映射本地文件夹
-db_data:/var/lib/mysql
ports:#如果不写端口映射的话,外部无法连接该mysql(下方WordPress连接没问题)
-"3306:3306"
restart:always
environment:
MYSQL_ROOT_PASSWORD:xxx
MYSQL_DATABASE:wordpress
MYSQL_USER:wordpress
MYSQL_PASSWORD:wordpress

wordpress:
depends_on:#依赖上方的dbservice
-db
image:wordpress:latest
volumes:
-wp_site:/var/www/html
ports:
-"8000:80"
restart:always
privileged:true
environment:
#可以直接使用上方service名+端口来获得链接
WORDPRESS_DB_HOST:db:3306
WORDPRESS_DB_USER:wordpress
WORDPRESS_DB_PASSWORD:wordpress
#定义域名
WORDPRESS_CONFIG_EXTRA:"define('WP_HOME','https://blog.amoyiki.com');define('WP_SITEURL','https://blog.amoyiki.com');"

volumes:
db_data:
wp_site:

运行容器

#启动
$sudodocker-composeup-d
#关闭
$sudodocker-composedown

现在可以用 http://ip:port 来访问。如果发现无法访问,可以 查看容器日志寻找错误

$sudodocker-composeps
NameCommandStatePorts

blog_db_1docker-entrypoint.shmysqldUp0.0.0.0:3306->3306/tcp,33060/tcp
blog_wordpress_1docker-entrypoint.shapach...Up0.0.0.0:8000->80/tcp
#主要后面的WordPress是服务的名字这和docker查看日志使用容器名不同
$sudodocker-composelogs-f--tail=10wordpress
$sudodocker-composelogs-f--tail=10db

使用主机 Nginx 反代 docker wordpress

nginx 的配置文件如下(省略不相干内容)

userroot;#这是由于docker容器内WordPress文件用户为www-data

server{
listen80;
server_name*.amoyiki.com;
return301https://$host$request_uri;
}
upstreamwordpress-workhorse{
server127.0.0.1:8000fail_timeout=10s;
}
server{
server_nameblog.amoyiki.com;
listen443ssl;
sslon;
ssl_certificate/ssl/path/fullchain.pem;
ssl_certificate_key/ssl/path/privkey.pem;
access_log/var/log/nginx/access.logmain;
#主机中WordPress数据卷位置
root/var/lib/docker/volumes/blog_wp_site/_data;


location/{
proxy_passhttp://wordpress-workhorse;
proxy_set_headerHost$host;
proxy_set_headerX-Real-IP$remote_addr;
proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
proxy_set_headerX-Forwarded-Protohttps;
}

location~*\.(js|css|png|jpg|jpeg|gif|ico)${
expires7d;
access_logoff;
}

error_page500502503504/50x.html;
location=/50x.html{
roothtml;
}
}

错误合集

nginx error Permission denied

"/var/lib/docker/volumes/myblog_wp_site/_data/wp-includes/css/dashicons.min.css" failed (13: Permission denied)

之前我 nginx.conf user 使用的是默认的 nobody 无法读取 docker 中 wp 的 www-data 这个用户组数据,所以直接将 nginx 用户提到 root,这个之后可以优化

感谢你能够认真阅读完这篇文章,希望小编分享的“主机Nginx + Docker WordPress Mysql搭建的示例”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

分享
海报
173
上一篇:修改Linux远程登录欢迎提示信息的方法 下一篇:FileZilla Server怎么搭建FTP服务器配置

忘记密码?

图形验证码