使用 Docker 和 Traefik 搭建 WordPress
使用 Docker 和 Traefik 搭建 WordPress
其實不止一次想重新提筆聊聊 WordPress ,然而之前因為定製程式碼量比較多,許多文章不得不擱置在草稿箱中。恰逢假期,整理草稿箱,從搭建開始聊起吧。
本文將使用 Docker、Compose、Traefik 對 WordPress 進行搭建,完整操作時間應該在十分鐘內。
為什麼選擇 WordPress
每當聊起 CMS 類軟體,聊起社群資源豐富,不由地會想到一個“萬金油”:WordPress ,官方資料稱:
Over 60 million people have chosen WordPress to power the place on the web they call “home”
Hundreds of thousands of developers, content creators, and site owners gather at monthly meetups in 436 cities worldwide.
WordPress 為 33% 的網際網路提供支援。
許多人對它的印象還停留在執行速度慢、安全性差、程式碼臃腫的部落格系統上。但是事實上,經過十幾年的迭代,它的大版本來到了 5.0 (PHP 主流執行時也來到了 7.0 時代),效能早已不是問題、安全問題只要做適當的防護能杜絕絕大多數。
emmm, 程式碼確實還是挺臃腫的。
基於官方映象
官方提供了容器映象,映象下載可以直接使用下面的命令:
docker pull wordpress
1
但是為了更好的配置使用,我們使用 compose 的方式進行編排,將下面的內容儲存為 docker-compose.yml :
version: '3'
services:
wp:
image: ${WP_IMAGE}
restart: always
networks:
- traefik
environment:
WORDPRESS_DB_HOST: ${DB_HOST}
WORDPRESS_TABLE_PREFIX: ${WP_DB_PREFIX}
WORDPRESS_DB_NAME: ${DB_NAME}
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASS}
volumes:
# 如果你有定製上傳檔案尺寸的需求
# - ./config/php.conf.uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- ./wp-app:/var/www/html
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:${WP_DOMAINS}"
- "traefik.frontend.entryPoints=https,http"
mariadb:
image: ${DB_IMAGE}
restart: always
container_name: ${DB_HOST}
networks:
- traefik
environment:
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
volumes:
- ./data:/var/lib/mysql
pma:
image: ${PMA_IMAGE}
restart: always
networks:
- traefik
environment:
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASS}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASS}
PMA_HOST: ${DB_HOST}
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:${PMA_DOMAIN}"
networks:
traefik:
external: true
如果你還不會使用 Traefik ,可以翻看我之前的文章,這裡不做過多贅述。
為了可維護性,我們將容器映象版本資訊,應用域名,資料庫配置等抽象為單獨的環境配置檔案 .env,內容示例:
WP_IMAGE=wordpress:5.1.1-php7.3-apache
WP_DOMAINS=wp.lab.com,wp.lab.io
WP_DB_PREFIX=wp
DB_IMAGE=mariadb:10.3.8
DB_HOST=wp-db
DB_NAME=wordpress
DB_USER=wordpress
DB_PASS=wordpress
DB_ROOT_PASS=soulteary
PMA_IMAGE=phpmyadmin/phpmyadmin:4.8.2
PMA_DOMAIN=pma.wp.lab.com,pma.wp.lab.io
當兩個檔案都儲存完畢之後,我們執行 docker-compose up 命令,你將會看到許多日誌資訊,當看到類似下面的資訊時,WordPress 環境便準備就緒啦。
wp-db |
wp-db | MySQL init process done. Ready for start up.
wp-db |
wp-db | 2019-04-06 16:26:48 0 [Note] mysqld (mysqld 10.3.8-MariaDB-1:10.3.8+maria~jessie) starting as process 1 ...
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Using Linux native AIO
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Uses event mutexes
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Compressed tables use zlib 1.2.8
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Number of pools: 1
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Using SSE2 crc32 instructions
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Initializing buffer pool, total size = 256M, instances = 1, chunk size = 128M
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Completed initialization of buffer pool
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Creating shared tablespace for temporary tables
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: 10.3.8 started; log sequence number 1630833; transaction id 21
wp-db | 2019-04-06 16:26:48 0 [Note] Plugin 'FEEDBACK' is disabled.
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
wp-db | 2019-04-06 16:26:48 0 [Note] Server socket created on IP: '::'.
wp-db | 2019-04-06 16:26:48 0 [Note] InnoDB: Buffer pool(s) load completed at 190406 16:26:48
wp-db | 2019-04-06 16:26:48 0 [Warning] 'proxies_priv' entry '@% root@e97787886b74' ignored in --skip-name-resolve mode.
wp-db | 2019-04-06 16:26:48 0 [Note] Reading of all Master_info entries succeded
wp-db | 2019-04-06 16:26:48 0 [Note] Added new Master_info '' to hash table
wp-db | 2019-04-06 16:26:48 0 [Note] mysqld: ready for connections.
wp-db | Version: '10.3.8-MariaDB-1:10.3.8+maria~jessie' socket: '/var/run/mysqld/mysqld.sock' port: 3306 mariadb.org binary distribution
wp_1 | AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.23.0.8. Set the 'ServerName' directive globally to suppress this message
此時啟動瀏覽器,開啟我們配置檔案中配置好的域名(WP_DOMAIN),便可以開始著名的“三分鐘”安裝了。
填寫適當資訊,一路 Next ,WordPress 就安裝成功了。
後續便是具體的應用配置,以及效能、安全方面的最佳化啦。
其他
如果你有運算元據庫的需求,又不想下載資料庫工具或者使用命令列進行操作,可以使用 **PHPMyAdmin ** ,同樣的,在瀏覽器中開啟之前配置檔案中的 PMA 域名地址(PMA_DOMAIN),就可以進行操作了。
不過需要注意的是,需要使用 root 和 root password 進行登入,因為預設情況下,Mariadb 未對其他使用者賬號進行遠端訪問授權。
本文轉自黑馬程式設計師官網社群,免費獲取更多技術知識與教程 關注主頁
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69915785/viewspace-2643938/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 Docker 和 Traefik 搭建 VaultDocker
- 使用 Docker 和 Traefik 搭建 GitLab(後篇)DockerGitlab
- 使用 Docker 和 Traefik 搭建 GitLab (前篇)DockerGitlab
- 更完善的 Docker + Traefik 使用方案Docker
- 使用 Docker 搭建 ConfluenceDocker
- 使用docker搭建sonarqubeDocker
- 用 Traefik 搭配 Docker 快速架設服務Docker
- centos 下搭建wordpressCentOS
- 阿里雲國際版使用ROS搭建WordPress教程阿里ROS
- 使用WordPress搭建一個專屬自己的部落格
- 使用docker 搭建rabbitmq 叢集DockerMQ
- 使用Docker搭建Chirpy部落格Docker
- 使用docker搭建gitlab環境DockerGitlab
- 使用docker快速搭建gitlab私服DockerGitlab
- 使用docker搭建laravel環境DockerLaravel
- 使用docker和nginx搭建一個下載伺服器DockerNginx伺服器
- 利用docker部署一個wordpressDocker
- 在 Traefik Proxy 2.5 中使用/開發私有外掛(Traefik 官方部落格)
- Kubernetes中使用Traefik的sticky特性
- 使用 Traefik 提高 WebSocket 應用效能Web
- 個人部落格搭建( wordpress )
- 2021年Wordpress部落格搭建
- 使用 docker + devpi 搭建本地 pypi 源Dockerdev
- 使用 Docker 搭建 Laravel 本地環境DockerLaravel
- 使用docker快速搭建hive環境DockerHive
- 使用 Docker 搭建你的Wiki(MoinMoin)Docker
- 使用 Docker 搭建你的Wiki(TiddlyWiki)Docker
- 使用 Docker 搭建你的Wiki(MediaWiki)Docker
- 使用Kubernetes、K3s和Traefik2進行本地開發
- docker使用nginx搭建靜伺服器DockerNginx伺服器
- 使用 Docker 搭建 minio 檔案儲存Docker
- Docker使用Portainer搭建視覺化介面DockerAI視覺化
- docker使用容器搭建本地私有倉庫Docker
- Elasticsearch使用系列-Docker搭建Elasticsearch叢集ElasticsearchDocker
- Windows10 使用phpstorm、docker搭建HyperfWindowsPHPORMDocker
- 使用 docker + verdaccio 搭建npm私有倉庫DockerNPM
- 使用 Docker 搭建本地開發環境!Docker開發環境
- 使用 PhpStorm + Docker 搭建開發環境PHPORMDocker開發環境