主机Nginx + Docker WordPress Mysql搭建的详细步骤

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了主机Nginx + Docker WordPress Mysql搭建的详细步骤相关的知识,希望对你有一定的参考价值。

参考技术A

这篇文章主要介绍了主机nginx + Docker WordPress mysql搭建的详细步骤,我觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随我过来看看吧

环境

安装
安装 docker 所需依赖

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

安装 docker-ce
$ sudo yum-config-manager --add-repo https:``//download``.docker.com``/linux/centos/docker-ce``.repo
$ sudo yum install docker-ce
$ sudo systemctl start docker
$ docker --version
$ sudo docker run hello-world

安装 docker-compose

$ sudo curl -L https:``//github``.com``/docker/compose/releases/download/1``.17.0``/docker-compose-`````uname -s -```uname -m -o /usr/bin/docker-compose
$ sudo chmod +x /usr/bin/docker-compose
$ docker-compose --version

编写 docker-compose.yml
$ mkdir .``/blog
$ cd blog
$ sudo vim docker-compose.yml

运行容器
# 启动
$ sudo docker-compose up -d
# 关闭
$ sudo docker-compose down

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

$ sudo docker-compose ps
Name Command State Ports
blog_db_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306``/tcp``, 33060``/tcp
blog_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80``/tcp
# 主要后面的 WordPress 是服务的名字 这和 docker 查看日志使用容器名不同
$ sudo docker-compose logs -f --``tail``=10 wordpress
$ sudo docker-compose logs -f --``tail``=10 db
使用主机 Nginx 反代 docker wordpress
nginx 的配置文件如下(省略不相干内容)

错误合集

nginx error Permission denied

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

统信下docker安装nginx并挂载宿主机文件夹

对于跑在docker里的nginx来说,docker就是一个虚拟机。它访问的,默认是docker里的路径。

假定统信下已安装好docker。

一、在docker中安装nginx

拉取官方的最新版本的镜像

docker pull nginx:latest

查看是否已安装了 nginx

docker images

二、运行nginx

docker run --name nginx-test -p 8080:80 -d nginx

参数说明:

–name nginx-test:容器名称。
-p 8080:80: 端口进行映射,将宿主机 8080 端口映射到docker容器内部的 80 端口。
-d nginx: 设置容器在在后台一直运行。

这时候,访问宿主机的8080端口,即可看到效果。

三、挂载宿主机文件夹

请注意,在这里,niginx运行在docker中,并不是运行在宿主机中。docker就是所谓的容器。每个容器,都可以看做是一个虚拟机。它有自己的文件系统,有自己的势力范围。有时,我们使用nginx作为WEB服务器,需要指向发布内容所在文件夹。发布内容不方便传到docker,这时候就需要挂载docker外部文件夹,也就是宿主机的文件夹。

方法如下:
1、创建宿主机文件夹

mkdir -p ~/data/docker/nginx2/conf #存放配置文件
mkdir -p ~/dist #存放web发布内容

2、拷贝nginx配置文件

#nginx-test是前面例子中运行的nginx实例的名字
docker cp nginx-test:/etc/nginx/nginx.conf ~/data/docker/nginx2/conf/

3、运行nginx并设置挂载目录

docker run --name nginx2 --privileged -it -p 8081:80 \\ #宿主机的8080端口已经被上面的例子占用
-v ~/data/docker/nginx2/conf/nginx.conf:/etc/nginx/nginx.conf:ro \\ #总配置文件
-v ~/data/docker/nginx2/conf/conf.d:/etc/nginx/conf.d:ro \\ #子配置文件
-v ~/dist:/usr/share/nginx/html:rw \\ #挂载发布内容文件夹
-v ~/data/docker/nginx2/logs:/var/log/nginx \\ #日志
-d nginx 

4、拷贝子配置文件
拷贝过来就好了,不需要做什么修改。

docker cp nginx-test:/etc/nginx/conf.d/default.conf  /data/docker/nginx2/conf/conf.d

conf/nginx.conf是总的配置文件,它通过底部一句:

include /etc/nginx/conf.d/*.conf; #/etc/nginx/conf.d,这个是docker里的路径。

来引入子配置文件。nginx.conf在前面已经拷贝了,现在拷贝子配置文件。这里面是否存在操作次序,不好说。

docker pull 下来的镜像都默认存在/var/lib/docker/文件夹下。但这个只是镜像,跟我们讨论的主题没有什么关系。nginx镜像相当于类,nginx实例运行于docker容器中。

5、测试
创建index.html。从别的地方拷贝现成的过来也可以。

#生成index.html
cd ~/dist
echo "hello world!" > index.html
#查看docker实例情况,获得容器ID
docker ps -a
##重启nginx实例
docker restart nginx实例ID

访问一下。大功告成。

参考文章:
Docker 安装 Nginx
docker中部署nginx镜像挂载文件夹和文件并解决出错

以上是关于主机Nginx + Docker WordPress Mysql搭建的详细步骤的主要内容,如果未能解决你的问题,请参考以下文章

Docker安装的Nginx如何代理宿主机的服务

Docker nginx 代理到主机

统信下docker安装nginx并挂载宿主机文件夹

Docker 网络 - nginx:在上游找不到 [emerg] 主机

docker 安装 nginx

Nginx 从 docker-compose 运行返回“在上游找不到主机”