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

环境

  • Linux 3.10.0-693.el7.x86_64
  • Docker version 18.09.0
  • docker-compose version 1.17.0

安装

安装 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
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: # 依赖上方的 db service
  - 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:

运行容器

# 启动
$ 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 的配置文件如下(省略不相干内容)

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

server {
 listen 80;
 server_name *.amoyiki.com;
 return 301 https://$host$request_uri;
}
upstream wordpress-workhorse {
 server 127.0.0.1:8000 fail_timeout=10s;
}
server {
 server_name blog.amoyiki.com;
 listen 443 ssl;
 ssl on;
 ssl_certificate /ssl/path/fullchain.pem;
 ssl_certificate_key /ssl/path/privkey.pem;
 access_log /var/log/nginx/access.log main;
 # 主机中 WordPress 数据卷位置
 root /var/lib/docker/volumes/blog_wp_site/_data;

 location / {
  proxy_pass http://wordpress-workhorse;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto https;
 }

 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
  expires 7d;
  access_log off;
 }

 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
  root html;
 }
}

错误合集

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,这个之后可以优化

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

时间: 2018-11-13

使用docker创建静态网站应用(多种方式)

能承载静态网站的服务器有很多,本文使用,nginx.apache.tomcat服务器演示docker静态网站应用设置 一,创建docker文件, 不同服务器的docker文件不一样,下面分别创建nginx.apache.tomcat三个服务器的docker文件,其实主要就是区别于FROM标签于项目文件目录 目录结构褥子: 1,nginx 的 docker文件 FROM nginx COPY ./www /usr/share/nginx/html/ WORKDIR /usr/share/nginx

Docker安装常用组件(mysql,redis)的方法

docker安装mysql docker search mysql 搜索 docker pull mysql:5.6 下载 docker images |grep mysql 查看 docker run -p 3306:3306 --name mysql_docker -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysq

vue-cli3 项目从搭建优化到docker部署的方法

1. 创建一个vue项目 相信大部分人都已经知道怎么创建项目的,可以跳过这一节,看下一节. 1.1 安装@vue/cli # 全局安装 vue-cli脚手架 npm install -g @vue/cli 等待安装完成后开始下一步 1.2 初始化项目 vue create vue-cli3-project (1)选择一个预设 可以选择默认预设,默认预设包含了 babel , eslint 我们选择更多功能 Manually select features 回车后来到选择插件 (2)插件选择 这边

docker 搭建Mysql集群的方法示例

docker基本指令: 更新软件包 yum -y update 安装Docker虚拟机(centos 7) yum install -y docker 运行.重启.关闭Docker虚拟机 service docker start service docker stop 搜索镜像 docker search 镜像名称 下载镜像 docker pull 镜像名称 查看镜像 docker images 删除镜像 docker rmi 镜像名称 运行容器 docker run 启动参数 镜像名称 查看容

Docker创建MySQL的讲解

1.下载MySQL Image 命令: docker pull mysql 2.创建容器 命令样例: sudo docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql 命令说明: 总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具

CentOS版本问题安装Docker报错的解决方案

1. 版本信息 # cat /etc/system-release CentOS Linux release 7.2.1511 (Core) # uname -a Linux k8s-daniel-3 3.10.0-327.28.3.el7.x86_64 #1 SMP Thu Aug 18 19:05:49 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 2. Docker的安装和错误 直接使用yum -y install docker进行安装, 然后无法启动.

Docker创建运行多个mysql容器的方法示例

1.使用mysql/mysql-server:latest镜像快速启动一个Mysql实例 docker run --name ilink_user_01 -e MYSQL_ROOT_PASSWORD=123456 0d 0p 3307:3306 mysql/mysql-server:latest ilink_user_01是容器名称,通过--name指令指定 123456为数据库root的密码,通过-e指定环境MYSQL_ROOT_PASSWORD为123456,-e (指定容器内的环境变量)

浅析docker-compose部署mysql无法访问的问题

什么是Docker-Compose Compose项目来源于之前的fig项目,使用python语言编写,与docker/swarm配合度很高.Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器. Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用

docker官方mysql镜像自定义配置详解

之前为了节省安装时间,所以用官方mysql docker镜像启动mysql. 通过 复制代码 代码如下: $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d daocloud.io/mysql:tag some-mysql 指定了该容器的名字,my-secret-pw 指定了 root 用户的密码,tag 参数指定了你想要的 MySQL 版本 这样数据是没有持久化的 所以在启动参数中需要挂载本地目录 于是这样

Docker中部署mysql服务的方法及遇到的坑

最近一直在学习搬运工,感觉这么厉害的东西怎么以前不知道呢,把自己捣鼓的过程整理记录下来,供同学们参考 第零步:从Docker Hub拉取官方mysql镜像 docker pull mysql 然后就是进入漫长的等待,当然如果你配置了镜像加速器,速度会快那么一丢丢 第一步:使用docker images命令查看镜像 你会看到我们这里已经有了MySQL的的镜像 第二步:启动我们的mysql的镜像,创建一个MySQL的容器 使用命令:docker run -d --name mysql -p 3307

ubuntu下在docker中安装mysql5.6 的方法

1.安装mysql5.6 docker run mysql:5.6 等所有项目都是Download complet 安装完毕 5.6: Pulling from library/mysql 10a267c67f42: Pull complete c2dcc7bb2a88: Pull complete 17e7a0445698: Pull complete 9a61839a176f: Pull complete d4657fda01d9: Pull complete c5278a445e5d: P

在docker中运行mariadb程序的方法

1.安装docker 2.获取mariadb镜像 docker pull mariadb 首先在https://hub.docker.com查找mariadb官方镜像,相关参数设置https://hub.docker.com/_/mariadb/有详细说明 3.运行镜像 docker run -p 3306:3306 --name mariaone -v /usr/local/mysql/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=mypass

在docker中部署tomcat并且部署java应用程序的步骤详解

先给大家简单说下Docker的概念 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创建Dockerfile,命令如:touch Docker

C#中调用MySQL存储过程的方法

本文实例讲述了C#中调用MySQL存储过程的方法.分享给大家供大家参考.具体如下: 这段代码演示在 C# 程序中调用 MySQL 的存储过程,没有返回值,没有参数传递. MySqlConnection myConnection; myConnection = new MySqlConnection(); myConnection.ConnectionString = "database="+database+";server="+ server+";use

docker中使用mysql数据库详解(在局域网访问)

前言 开发过程中经常需要安装.调试mysql数据库,还需要在各种操作系上安装包依赖,实在是繁琐,因此就研究了一下如何在docker上运行一个mysql镜像,省却了我安装.找依赖的问题. 注:本文所有内容均在CentOS Linux release 7.2.1511 (Core) 上测试完成 假设,你已经安装好docker.如果没有安装好docker可以参考centos7上安装docker 使用 docker pull mysql 获得mysql镜像,接着使用 docker images 查看镜像

在docker中安装mysql详解

在docker中安装mysql ubuntu官方镜像是精简的ubuntu系统,很多软件和库没有安装,所以直接安装mysql的话依赖较多,建议直接从源码编译安装mysql 通过命令行安装 先启动一个容器,建议可以创建一个包含常用工具的便于自己使用的基本镜像,比如:包含vim.net-tools.添加阿里云镜像 1.安装编译环境 需要gcc.cmake等环经,因为使用ubuntu的官方源较慢,所以要添加阿里云的源,但是注意,不要覆盖原来ubuntu的源,将阿里云的源放在/etc/apt/source

Android实现在ServiceManager中加入自定义服务的方法详解

本文实例讲述了Android实现在ServiceManager中加入自定义服务的方法.分享给大家供大家参考,具体如下: 当我们要使用android的系统服务时,一般都是使用Context.getSystemService方法.例如我们要获取AudioManager,我们可以: AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 获取的服务,其实是在ServiceManager中注册的Binder服务,

在ubuntu中部署samba服务器的方法

Samba服务在Ubuntu服务器版本中默认并没有安装.今天公司上了一批新电脑,准备把它装成服务器,于是为了方便开发的使用,我在上面部署了一个samba,用来实现window和linux的联系: 具体步骤,我详细的查看了百度,高手云集,以下就是总结了网友的经验,现在记下来,以后有用就不用到处找了. 一. samba的安装: sudo apt-get install samba sudo apt-get install smbfs 二. 创建共享目录: mkdir /home/phinecos/s

关于Mybatis 中使用Mysql存储过程的方法

1.存储过程的简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它. 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的.数据库中的存储过程可以看做是对编程中