【Docker】WordPress 容器化部署

WordPress標(biāo)準(zhǔn)軟件基于Bitnami wordpress 構(gòu)建。當(dāng)前版本為6.4.3

你可以通過輕云UC部署工具直接安裝部署捞慌,也可以手動按如下文檔操作耀鸦,該項目已經(jīng)全面開源,可以從如下環(huán)境獲取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform

qinghub自動安裝部署配置庫

什么是 WordPress?

WordPress 是世界上最受歡迎的博客和內(nèi)容管理平臺啸澡。功能強(qiáng)大但簡單袖订,從學(xué)生到跨國公司,每個人都可以使用它來構(gòu)建美觀嗅虏、實用的網(wǎng)站洛姑。

Overview of WordPress

快速執(zhí)行

docker run --name wordpress bitnami/wordpress:latest

使用該 image

WordPress 需要訪問 MySQL 或 MariaDB 數(shù)據(jù)庫來存儲信息。

使用 Docker 命令行

Step 1: 創(chuàng)建網(wǎng)絡(luò)

docker network create wordpress-network

Step 2: 創(chuàng)建MariaDB持久化卷并創(chuàng)建MariaDB容器

$ docker volume create --name mariadb_data
docker run -d --name mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_wordpress \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_wordpress \
  --network wordpress-network \
  --volume mariadb_data:/bitnami/mariadb \
  bitnami/mariadb:latest

Step 3: 為 WordPress 持久性創(chuàng)建卷并啟動容器

$ docker volume create --name wordpress_data
docker run -d --name wordpress \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --network wordpress-network \
  --volume wordpress_data:/bitnami/wordpress \
  bitnami/wordpress:latest

訪問 : http://your-ip/

使用 Docker Compose 運(yùn)行應(yīng)用程序

docker-compose up -d

持久化

如果刪除容器皮服,所有數(shù)據(jù)都將丟失楞艾,并且下次運(yùn)行映像時,數(shù)據(jù)庫將重新初始化龄广。為了避免這種數(shù)據(jù)丟失硫眯,您應(yīng)該安裝一個即使在容器被刪除后仍然存在的卷。

為了持久化择同,您應(yīng)該在路徑上安裝一個目錄/bitnami/wordpress两入。如果掛載的目錄為空,則首次運(yùn)行時會對其進(jìn)行初始化敲才。此外裹纳,您應(yīng)該安裝一個卷來持久保存 MariaDB 數(shù)據(jù)择葡。

mariadb_data上面的示例定義了名為和 的Docker 卷wordpress_data。只要不刪除卷痊夭,WordPress 應(yīng)用程序狀態(tài)就會持續(xù)存在刁岸。

為了避免無意中刪除卷,您可以將主機(jī)目錄掛載為數(shù)據(jù)卷她我『缡铮或者,您可以使用卷插件來托管卷數(shù)據(jù)番舆。

使用 Docker Compose 將主機(jī)目錄掛載為數(shù)據(jù)卷

   mariadb:
     ...
     volumes:
-      - 'mariadb_data:/bitnami/mariadb'
+      - /path/to/mariadb-persistence:/bitnami/mariadb
   ...
   wordpress:
     ...
     volumes:
-      - 'wordpress_data:/bitnami/wordpress'
+      - /path/to/wordpress-persistence:/bitnami/wordpress
   ...
-volumes:
-  mariadb_data:
-    driver: local
-  wordpress_data:
-    driver: local

注意: 由于這是一個非根容器酝碳,因此安裝的文件和目錄必須具有 UID 的適當(dāng)權(quán)限1001。

使用 Docker 命令行將主機(jī)目錄掛載為數(shù)據(jù)卷

Step 1: 創(chuàng)建網(wǎng)絡(luò)(如果不存在)

docker network create wordpress-network

Step 2. 創(chuàng)建具有主機(jī)卷的 MariaDB 容器

docker run -d --name mariadb \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env MARIADB_USER=bn_wordpress \
  --env MARIADB_PASSWORD=bitnami \
  --env MARIADB_DATABASE=bitnami_wordpress \
  --network wordpress-network \
  --volume /path/to/mariadb-persistence:/bitnami/mariadb \
  bitnami/mariadb:latest

NOTE: 由于這是一個非根容器恨狈,因此安裝的文件和目錄必須具有 UID 的適當(dāng)權(quán)限1001疏哗。

Step 3. 使用主機(jī)卷創(chuàng)建 WordPress 容器

docker run -d --name wordpress \
  -p 8080:8080 -p 8443:8443 \
  --env ALLOW_EMPTY_PASSWORD=yes \
  --env WORDPRESS_DATABASE_USER=bn_wordpress \
  --env WORDPRESS_DATABASE_PASSWORD=bitnami \
  --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
  --network wordpress-network \
  --volume /path/to/wordpress-persistence:/bitnami/wordpress \
  bitnami/wordpress:latest

NOTE: 由于這是一個非根容器,因此安裝的文件和目錄必須具有 UID 的適當(dāng)權(quán)限1001禾怠。

配置

環(huán)境變量

可定制的環(huán)境變量

Name Description Default Value
WORDPRESS_DATA_TO_PERSIST 相對于 WordPress 安裝目錄保留的文件非春。要提供多個值迹恐,請用空格分隔它們。 wp-config.php wp-content
WORDPRESS_ENABLE_HTTPS 是否默認(rèn)為 WordPress 啟用 HTTPS。 no
WORDPRESS_BLOG_NAME WordPress blog 名稱. "User's blog"
WORDPRESS_SCHEME 生成應(yīng)用程序 URL 的方案长赞。已棄用WORDPRESS_ENABLE_HTTPS姆另。 http
WORDPRESS_HTACCESS_OVERRIDE_NONE 將 ApacheAllowOverride變量設(shè)置為None. 所有默認(rèn)指令都將從/opt/bitnami/wordpress/wordpress-htaccess.conf. yes
WORDPRESS_ENABLE_HTACCESS_PERSISTENCE 保留 htaccess 的自定義更改忙芒。是否堅持就看值WORDPRESS_HTACCESS_OVERRIDE_NONE凰棉。/opt/bitnami/wordpress/wordpress-htaccess.confno/opt/bitnami/wordpress/.htaccess no
WORDPRESS_RESET_DATA_PERMISSIONS 初始化時強(qiáng)制重置持久數(shù)據(jù)的所有權(quán)/權(quán)限,否則假設(shè)所有權(quán)/權(quán)限正確往产。以非 root 身份運(yùn)行時被忽略被碗。 no
WORDPRESS_TABLE_PREFIX 在 WordPress 中使用的表前綴。 wp_
WORDPRESS_PLUGINS 要安裝和激活的 WordPress 插件列表仿村,以逗號分隔锐朴。還可以設(shè)置為all激活所有當(dāng)前安裝的插件,或none跳過蔼囊。 none
WORDPRESS_SKIP_BOOTSTRAP 是否對應(yīng)用程序執(zhí)行初始引導(dǎo)焚志。 no
WORDPRESS_AUTO_UPDATE_LEVEL 允許安裝 WordPress 核心的自動更新級別。有效值:major压真、minor娩嚼、none。 none
WORDPRESS_ENABLE_REVERSE_PROXY 啟用 WordPress 對反向代理標(biāo)頭的支持 no
WORDPRESS_ENABLE_XML_RPC 啟用 WordPress XML-RPC 端點 no
WORDPRESS_USERNAME WordPress user name. user
WORDPRESS_PASSWORD WordPress user password. bitnami
WORDPRESS_EMAIL WordPress user e-mail address. user@example.com
WORDPRESS_FIRST_NAME WordPress user first name. UserName
WORDPRESS_LAST_NAME WordPress user last name. LastName
WORDPRESS_ENABLE_MULTISITE 啟用 WordPress 多站點配置滴肿。 no
WORDPRESS_MULTISITE_NETWORK_TYPE 要啟用的 WordPress 多站點網(wǎng)絡(luò)類型岳悟。有效值:subfolder、subdirectory、subdomain贵少。 subdomain
WORDPRESS_MULTISITE_EXTERNAL_HTTP_PORT_NUMBER WordPress 多站點的外部 HTTP 端口呵俏。 80
WORDPRESS_MULTISITE_EXTERNAL_HTTPS_PORT_NUMBER WordPress 多站點的外部 HTTPS 端口。 443
WORDPRESS_MULTISITE_ENABLE_NIP_IO_REDIRECTION 啟用 WordPress 多站點時是否啟用 IP 地址重定向到 nip.io 通配符 DNS滔灶。僅當(dāng)在具有子域網(wǎng)絡(luò)類型的 IP 地址上運(yùn)行時才支持此功能普碎。 no
WORDPRESS_MULTISITE_FILEUPLOAD_MAXK WordPress 多站點上傳允許的最大上傳文件大小(以千字節(jié)為單位)录平。 81920
WORDPRESS_DATABASE_HOST Database server host. $WORDPRESS_DEFAULT_DATABASE_HOST
WORDPRESS_DATABASE_PORT_NUMBER Database server port. 3306
WORDPRESS_DATABASE_NAME Database name. bitnami_wordpress
WORDPRESS_DATABASE_USER Database user name. bn_wordpress
WORDPRESS_DATABASE_PASSWORD Database password bn_wordpress
WORDPRESS_ENABLE_DATABASE_SSL 是否為數(shù)據(jù)庫連接啟用SSL麻车。 no
WORDPRESS_VERIFY_DATABASE_SSL 當(dāng)數(shù)據(jù)庫連接啟用SSL時是否驗證數(shù)據(jù)庫SSL證書。 yes
WORDPRESS_OVERRIDE_DATABASE_SETTINGS 覆蓋持久性中的數(shù)據(jù)庫設(shè)置斗这。 no
WORDPRESS_SMTP_HOST smtp host动猬。 smpt.126.com
WORDPRESS_SMTP_PORT smtp port。 587
WORDPRESS_SMTP_USER smtp user表箭。 qingcloud
WORDPRESS_SMTP_PASSWORD smtp password赁咙。 qingcloud1234

只讀環(huán)境變量

Name Description Value
WORDPRESS_BASE_DIR WordPress 安裝目錄。 ${BITNAMI_ROOT_DIR}/wordpress
WORDPRESS_CONF_FILE 配置文件免钻。 ${WORDPRESS_BASE_DIR}/wp-config.php
WP_CLI_BASE_DIR WP-CLI 安裝目錄 ${BITNAMI_ROOT_DIR}/wp-cli
WP_CLI_BIN_DIR 二進(jìn)制文件 ${WP_CLI_BASE_DIR}/bin
WP_CLI_CONF_DIR 配置文件目錄 ${WP_CLI_BASE_DIR}/conf
WP_CLI_CONF_FILE 配置文件 ${WP_CLI_CONF_DIR}/wp-cli.yml
WORDPRESS_VOLUME_DIR 用于掛載配置文件的 WordPress 目錄彼水。 ${BITNAMI_VOLUME_DIR}/wordpress
WORDPRESS_DEFAULT_DATABASE_HOST 默認(rèn) database server host. mariadb
WORDPRESS_DEFAULT_DATABASE_HOST 默認(rèn) database server host. 127.0.0.1
PHP_DEFAULT_MEMORY_LIMIT 默認(rèn) PHP memory limit. 512M
PHP_DEFAULT_POST_MAX_SIZE 默認(rèn) PHP post_max_size. 80M
PHP_DEFAULT_UPLOAD_MAX_FILESIZE 默認(rèn) PHP upload_max_size. 80M
WP_CLI_DAEMON_USER WP-CLI system user. daemon
WP_CLI_DAEMON_GROUP WP-CLI system group. daemon

當(dāng)您啟動 WordPress 映像時,您可以通過在 docker-compose 文件或命令行上傳遞一個或多個環(huán)境變量來調(diào)整實例的配置docker run极舔。請注意凤覆,某些變量僅在容器首次啟動時才被考慮。如果要添加新的環(huán)境變量:

  • 對于 docker-compose

    wordpress:
      ...
      environment:
        - WORDPRESS_PASSWORD=my_password
      ...
    
  • 對于手動執(zhí)行姆怪,--env為每個變量和值添加一個選項:

    $ docker run -d --name wordpress -p 80:8080 -p 443:8443 \
      --env WORDPRESS_PASSWORD=my_password \
      --network wordpress-tier \
      --volume /path/to/wordpress-persistence:/bitnami \
      bitnami/wordpress:latest
    

例子

SMTP 配置

  • 修改docker-compose.yml

      wordpress:
        ...
        environment:
          - WORDPRESS_DATABASE_USER=bn_wordpress
          - WORDPRESS_DATABASE_NAME=bitnami_wordpress
          - ALLOW_EMPTY_PASSWORD=yes
          - WORDPRESS_SMTP_HOST=smtp.gmail.com
          - WORDPRESS_SMTP_PORT=587
          - WORDPRESS_SMTP_USER=your_email@gmail.com
          - WORDPRESS_SMTP_PASSWORD=your_password
      ...
    
  • 對于手動執(zhí)行:

    $ docker run -d --name wordpress -p 80:8080 -p 443:8443 \
      --env WORDPRESS_DATABASE_USER=bn_wordpress \
      --env WORDPRESS_DATABASE_NAME=bitnami_wordpress \
      --env WORDPRESS_SMTP_HOST=smtp.gmail.com \
      --env WORDPRESS_SMTP_PORT=587 \
      --env WORDPRESS_SMTP_USER=your_email@gmail.com \
      --env WORDPRESS_SMTP_PASSWORD=your_password \
      --network wordpress-tier \
      --volume /path/to/wordpress-persistence:/bitnami \
      bitnami/wordpress:latest
    

將 WordPress 容器連接到現(xiàn)有數(shù)據(jù)庫

WordPress 容器支持將 WordPress 應(yīng)用程序連接到外部數(shù)據(jù)庫叛赚。這是為 WordPress 使用外部數(shù)據(jù)庫的示例澡绩。

  • 修改docker-compose.yml

       wordpress:
         ...
         environment:
    -      - WORDPRESS_DATABASE_HOST=mariadb
    +      - WORDPRESS_DATABASE_HOST=mariadb_host
           - WORDPRESS_DATABASE_PORT_NUMBER=3306
           - WORDPRESS_DATABASE_NAME=wordpress_db
           - WORDPRESS_DATABASE_USER=wordpress_user
    -      - ALLOW_EMPTY_PASSWORD=yes
    +      - WORDPRESS_DATABASE_PASSWORD=wordpress_password
         ...
    
  • 對于手動執(zhí)行:

    $ docker run -d --name wordpress\
      -p 8080:8080 -p 8443:8443 \
      --network wordpress-network \
      --env WORDPRESS_DATABASE_HOST=mariadb_host \
      --env WORDPRESS_DATABASE_PORT_NUMBER=3306 \
      --env WORDPRESS_DATABASE_NAME=wordpress_db \
      --env WORDPRESS_DATABASE_USER=wordpress_user \
      --env WORDPRESS_DATABASE_PASSWORD=wordpress_password \
      --volume wordpress_data:/bitnami/wordpress \
      bitnami/wordpress:latest
    

如果數(shù)據(jù)庫已包含以前 WordPress 安裝的數(shù)據(jù)稽揭,您需要將變量設(shè)置WORDPRESS_SKIP_BOOTSTRAP為yes. 否則,容器將執(zhí)行安裝向?qū)Р⒖梢孕薷臄?shù)據(jù)庫中的現(xiàn)有數(shù)據(jù)肥卡。請注意溪掀,當(dāng)設(shè)置WORDPRESS_SKIP_BOOTSTRAP為時yes,環(huán)境變量(例如WORDPRESS_USERNAME步鉴、WORDPRESS_PASSWORD或 )的值WORDPRESS_EMAIL將被忽略揪胃。確保在此導(dǎo)入的數(shù)據(jù)庫中,表前綴與 中設(shè)置的表前綴匹配WORDPRESS_TABLE_PREFIX氛琢。

WP-CLI 工具

WordPress 容器包含命令行界面wp-cli喊递,可以幫助您管理 WP 站點并與之交互。要運(yùn)行此工具阳似,請注意您需要使用正確的系統(tǒng)用戶daemon骚勘。

這是使用wp-cli顯示幫助菜單的示例:

  • 使用docker-compose命令:
docker-compose exec wordpress wp help
  • 使用docker命令:
docker exec wordpress wp help

日志

WordPress Docker 映像將容器日志發(fā)送到stdout. 要查看日志:

docker logs wordpress

使用docker-compose命令:

docker-compose logs wordpress
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子俏讹,更是在濱河造成了極大的恐慌当宴,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泽疆,死亡現(xiàn)場離奇詭異户矢,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)殉疼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進(jìn)店門梯浪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人瓢娜,你說我怎么就攤上這事驱证。” “怎么了恋腕?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵抹锄,是天一觀的道長。 經(jīng)常有香客問我荠藤,道長伙单,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任哈肖,我火速辦了婚禮吻育,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘淤井。我一直安慰自己布疼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布币狠。 她就那樣靜靜地躺著游两,像睡著了一般。 火紅的嫁衣襯著肌膚如雪漩绵。 梳的紋絲不亂的頭發(fā)上贱案,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機(jī)與錄音止吐,去河邊找鬼宝踪。 笑死,一個胖子當(dāng)著我的面吹牛碍扔,可吹牛的內(nèi)容都是我干的瘩燥。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼不同,長吁一口氣:“原來是場噩夢啊……” “哼厉膀!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤站蝠,失蹤者是張志新(化名)和其女友劉穎汰具,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菱魔,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡留荔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了澜倦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聚蝶。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖藻治,靈堂內(nèi)的尸體忽然破棺而出碘勉,到底是詐尸還是另有隱情,我是刑警寧澤桩卵,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布验靡,位于F島的核電站,受9級特大地震影響雏节,放射性物質(zhì)發(fā)生泄漏胜嗓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一钩乍、第九天 我趴在偏房一處隱蔽的房頂上張望辞州。 院中可真熱鬧,春花似錦寥粹、人聲如沸变过。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽媚狰。三九已至,卻和暖如春妄痪,著一層夾襖步出監(jiān)牢的瞬間哈雏,已是汗流浹背楞件。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工衫生, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人土浸。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓罪针,卻偏偏與公主長得像,于是被迫代替她去往敵國和親黄伊。 傳聞我的和親對象是個殘疾皇子泪酱,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內(nèi)容