Docker Compose搭建WordPress服務實現詳解

前言

最近在研究wordpress獨立建站,在項目部署的時候也踩瞭一些坑,為瞭避免再次踩坑,特此通過此文章記錄一下。

編寫docker-compose.yaml

此次建站采用的是docker compose的方式來部署wordpress項目,我們可以進入DockerHub官網找到wordpress鏡像:

image-20230213212100473.png

根據官方文檔提供的信息,最終我們可以編寫出如下docker-compose.yaml:

version: "3.1"
services:
  wordpress:
    image: wordpress:php8.2-apache
    restart: always
    ports:
      - "80:80"
    depends_on:
      - mysql
    environment:
      WORDPRESS_DB_HOST: mysql-server
      WORDPRESS_DB_USER: 數據庫用戶名
      WORDPRESS_DB_PASSWORD: 數據庫密碼
      WORDPRESS_DB_NAME: 數據庫名稱
      WORDPRESS_TABLE_PREFIX: wp_
    volumes:
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"        #設置系統時區
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"  #設置時區
      - "./wordpress/html:/var/www/html"
  mysql-server:
    image: "mysql"
    volumes:
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/localtime"        #設置系統時區
      - "/usr/share/zoneinfo/Asia/Shanghai:/etc/timezone"  #設置時區
      # 配置文件
      - "./mysql/conf:/etc/mysql/conf.d"
      # 數據文件
      - "./mysql/datadir:/var/lib/mysql"
      # 日志文件
      - "./mysql/logs:/logs"
    ports:
      - "3306:3306"
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 數據庫密碼
    command: --default-authentication-plugin=mysql_native_password
復制代碼

註意點

  • 鏡像的選擇

    DockerHub官網中,我們可以看到有很多不同版本的鏡像,比如php8.2-fpm-alpinefpm-alpinecli-php8.2php8.2-apache等等,我們最終要選擇的是帶有web服務的鏡像,也就是類似`php8.2-apache版本號,後面接-apachetag

    如果選擇的鏡像不帶web服務,那麼即使容器啟動成功瞭,瀏覽器訪問的時候也是不會有響應結果的;

    另外一點就是不要選擇默認的latest,如果鏡像版本有更新,可能會造成線上版本不兼容的問題;

  • 環境變量的配置

    從官方文檔來看,是建議我們在配置中通過環境變量的方式來配置目標數據庫的;即使不配置目標數據庫,在項目啟動後的安裝引導上也會提示我們配置數據庫,但是可能會出現無法訪問localhost的情況;

    在上述配置中,WORDPRESS_DB_HOST的配置我們使用的是mysql,它對應同一個網絡環境下的mysql實例,隻有當wordpress實例與mysql實例在同一個網絡環境下時,這樣配置才會生效。否則我們需要通過公網ip或者域名來指定WORDPRESS_DB_HOST

    WORDPRESS_TABLE_PREFIX代表【數據表前綴】,可以根據需要設定;

  • volumes配置

    我們在第一次創建wordpress實例時,還不能配置"./wordpress/html:/var/www/html"這個映射。我們需要先創建一個wordpress實例,然後通過docker cp命令從wordpress實例中拷貝/var/www/html文件到宿主機,上述配置"./wordpress/html:/var/www/html"就是我們把文件拷貝到宿主機的./wordpress/html下才添加的映射。

    這樣做的好處在於,如果我們的代碼有任何的修改,都不會因為wordpress宕機造成已經修改的源代碼丟失;

以上就是Docker Compose搭建Wordpress服務實現詳解的詳細內容,更多關於Docker Compose搭建Wordpress的資料請關註WalkonNet其它相關文章!

推薦閱讀: