最近在學習Docker
相關知識,經過閱讀第一本Docker書
後,正想着手實戰用一下這個技術,但又不太敢直接在項目環境下動手。考慮足足三秒鐘以後決定買個阿里雲ECS搭建一個屬於本身的基於Docker
的WordPress
博客Daniel Fu's hut傳送門。html
阿里雲ECS
Centos 7.4
Docker
Docker Compose
(Compose工具比起單純的Dockerfile來更爲便利、更易管理)WordPress
和MySql5.7
(運行在Docker容器中)如今逐個講解下如何安裝:mysql
根據官方文檔,Docker
分爲Community Edition (CE)
和Enterprise Edition (EE)
兩個版本,咱們做爲學習和我的使用,固然選擇的是Community Edition (CE)
,安裝步驟以下:linux
// 步驟1 - 爲了確保沒有安裝過老的Docker版本,先將已經安裝的Docker從宿主機上刪除(若是是在使用中的正式服務器,請謹慎執行此步): $ sudo yum remove docker \ docker-common \ docker-selinux \ docker-engine // 步驟2 - 安裝Docker所需的包: $ sudo yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 // 步驟3 - 配置到穩定的Docker CE安裝庫: $ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo // 步驟4 - 安裝Docker CE: $ sudo yum install docker-ce // 步驟5 - 啓動Docker服務: $ sudo systemctl start docker // 步驟6 - 測試是否安裝成功: // 能夠經過查看版本的形式確認安裝是否成功: $ docker --version // 也能夠經過直接運行hello-world容器來確認安裝是否成功: $ docker run hello-world
爲了便於使用,咱們須要安裝Docker Compose
來管理和運行Docker
容器,Docker Compose
的安裝步驟以下:git
// 步驟1 - 下載安裝文件: $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/bin/docker-compose // 步驟2 - 給已下載的安裝文件添加執行權限: $ sudo chmod +x /usr/bin/docker-compose // 步驟3 - 測試是否安裝成功: $ docker-compose --version
先建立一個工做目錄,並建立名爲docker-compose.yml
的文件:github
$ cd /usr/ $ sudo mkdir myblog && cd myblog $ sudo vim docker-compose.yml
將以下內容保存在docker-compose.yml
文件中:sql
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_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wp_site:/var/www/html ports: - "80:80" - "443:443" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: db_data: wp_site:
Composer
所使用的的yml
文件的語法,請參考官方文檔,這裏就不一一解釋了(由於我本身也是剛入門,只會幾個基本的用法)。yml
文件中,我在volumes
中添加了wp_site
的卷,並將其掛在到wordpress
容器中,這樣,當容器被中止或者刪除後,從新安裝並啓動wordpress
容器時,已安裝的plugins
也能夠直接繼續使用,而不是從新安裝。此時,咱們直接使用docker-compose
命令啓動容器:docker
$ sudo docker-compose up -d數據庫
啓動以後,咱們就能夠經過 http://ecs-ip (由於咱們綁定的是宿主機的80端口) 來訪問WordPress
(若是不能訪問,請查看阿里雲安全組中,是否已經開啓了你所指定端口的公網訪問權限,通常80端口是默認開啓的)。vim
若是須要關閉服務,則執行以下命令:centos
$ sudo docker-compose down
咱們的WordPress
博客已經搭建完成,經過訪問後臺管理頁面來初始化網站。而後找一個喜歡的主題,安裝好必要的插件,咱們就能夠在一個屬於本身的博客網站上寫下本身的第一篇博客。
分享一下:這是我第一次用WordPress
,還有不少東西須要慢慢摸索。目前我安裝了Jetpack
插件和WP Editor.MD
插件,選用的主題是Sirius
免費版。
第一次安裝時,當使用 sudo docker-compose up -d
命令啓動容器後,提示容器啓動正常,可是沒法訪問網站,此時經過sudo docker logs xxx_wordpress_1
(xxx_wordpress_1以實際生產的容器名稱爲準)查看日誌,看到日誌中不斷提示數據庫沒法鏈接的錯誤。花了好幾個小時排查,總算找到問題所在,是由於之前在機器上寫Docker
相關的測試例子的時候,宿主機上設置了幾個全局變量(如:ServerName、ServerHost、UserName等,可經過env
命令查看當前系統環境變量),這些全局變量致使了wordpress
容器沒法鏈接到db
容器。這個小插曲告訴咱們,不要隨便在宿主機上設置環境變量,若是必須設置,也應該作好命名和管理工做。