使用docker搭建wordpress


前言

去年在學習docker,在看完菜鳥教程和第一本docker書后,一直想實戰用一下這個技術,多用用才能熟能生巧,真正體驗它的利弊。正好傅老板用docker搭完了wordpress,我也就手癢跟着搭建了一下(也就是現在的這個博客網站)。
此處記錄一下搭建過程。

搭建環境

  • 阿里雲ECS

去年雙11買的,720/3年,1核1G1M香港服務器,centos 7.4
有個小插曲,阿里雲的工作人員還給我打電話,問我用的怎么樣。。阿里雲什么時候有這種回訪了。。。

  • 域名

阿里雲購買即可,像我申請的 .top 域名更是便宜,喪心病狂只要2塊錢。。

  • ssl證書

https用的證書,我是在騰訊雲免費申請的,地址為:騰訊雲證書管理,此處就不詳細描述申請過程了,很簡單的

  • Docker

這里要注意,centos中不要直接使用yum install docker,yum中的是舊的docker版本,升級參考我的這篇博文:CentOS更新Docker至最新版本

  • Docker Compose

compose原本是一個第三方公司寫的,用來在docker中定義和運行復雜應用的小工具,后來被docker收購了,正式用來替代最早的fig。
通過以下命令安裝:

# 下載compose
curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname > -s`-`uname -m` -o /usr/bin/docker-compose

# 賦予可執行權限,確保compose可執行
chmod +x /usr/bin/docker-compose

添加一個docker network

網站需要占據80端口,顯然,我們的服務器不可能只有一個網站,所以部署一個nginx容器是必須的,讓這個nginx來監聽80以及443端口,再根據域名轉發到對應的網站容器。容器之間的通信是通過network的,所以我們需要先添加一個network:

 docker network create nginx-proxy

compose部署WordPress和MySql容器

  • 創建工作目錄,創建docker-compose.yml文件:
cd /usr
mkdir myblog && cd myblog
vim docker-compose.yml
  • docker-compose.yml輸入以下內容:
version: '3'
services:
   db:
     image: mysql:5.7
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: your-mysql-root-password    # 在這里輸入你要設置的mysql密碼
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     volumes:
        - wp_site:/var/www/html     # 定義卷后,compose down之類的操作不會導致你的文章等數據丟失
     expose:
       - 80
     restart: always
     environment:
       VIRTUAL_HOST: www.thyiad.top,thyiad.top
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
   nginx-proxy:
     image: jwilder/nginx-proxy
     container_name: nginx-proxy
     restart: always
     ports:
       - "80:80"
       - "443:443"
     volumes:
       - /var/run/docker.sock:/tmp/docker.sock:ro   # docker.sock是docker守護進程默認監聽的Unix域套接字,容器進程通過它與守護進程進行通信。以后添加新的站點時,nginx將會自動發現並重啟服務
       - nginx_certs:/etc/nginx/certs:ro    # nginx的證書目錄,:ro指定為只讀
volumes:
    db_data:
    wp_site:
    nginx_certs:
networks:
   default:
     external:
       name: nginx-proxy

添加ssl證書

# 列出所有的卷信息,查找到xxx_wp_certs(xxx是docker自動添加的)
docker volume ls

# 查詢出xxx_wp_certs的真實路徑,一般是在 /var/lib/docker/volumes/xxx_wp_certs/_data
docker volume inspect --format '{{ .Mountpoint }}' xxx_wp_certs

# 創建www.thyiad.top.key,並且把ssl證書的xxx.key內容復制粘貼進來
cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.thyiad.top.key

# 創建www.thyiad.top.crt,並且把ssl證書的xxx.crt內容復制粘貼進來
cd /var/lib/docker/volumes/xxx_wp_certs/_data && sudo vim www.thyiad.top.crt

nginx-proxy如果發現在certs文件夾中存在當前域名的.crt和.key文件,將自動轉為https協議

運行wordpress

docker-compose up -d

此時,我們的網站就可以訪問了,很簡單吧?

參考資料:
傅老板的博客
docker-compose
nginx-proxy


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM