Docker搭建WordPress—搭建屬於自己的個人博客
使用docker部署動態博客,使用到的數據庫是MySQL,使用到的博客框架是wordpress。
一、安裝Docker:
Docker屬於Linux容器的一種封裝,提供簡單易用的容器使用接口。Docker將應用程序與該程序的依賴,打包在一個文件裏面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器裏運行,就好像在真實的物理機上運行一樣。有了Docker,就不用擔心環境問題。總體來說,Docker的接口相當簡單,用戶可以方便地創建和使用容器,把自己的應用放入容器。容器還可以進行版本管理、複製、分享、修改,就像管理普通的代碼一樣。關於Docker的基本認識可以簡單看一下此視頻【docker入門】10分鐘,快速學會docker】更多詳細的docker介紹可以自行查看百度。
Linux安裝Docker:
Ubuntu Docker 安裝 | 菜鳥教程
Debian Docker 安裝 | 菜鳥教程
CentOS Docker 安裝 | 菜鳥教程
Windows安裝Docker:Windows Docker 安裝 | 菜鳥教程
二、開始搭建
Docker安裝完後即可進行搭建,以下有兩種方式
第一種:
docker pull wordpress:latest //安裝WordPress
docker pull mysql:latest //安裝MySQL
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag //啓動MySQL
這裏註釋一下:
- docker run :啓動容器
- –name some-mysql:指定容器的名字,這裏設置爲some-mysql
- -e MYSQL_ROOT_PASSWORD:指定ROOT密碼
- -d:後臺運行容器
- tag參數是MySQL的版本號,可以是5.7、5.6、8.0。
docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress //啓動WordPress
//name參數指定要啓動的WordPress實例名稱,link參數指定要使用的Docker MySQL實例名稱,p參數將Docker內部的80端口映射到本地的8080端口上。
然後打開瀏覽器,輸入localhost:8080
(端口號是命令中設置的),然後就可以看到WordPress了。按照提示輸入用戶名等信息,然後安裝WordPress。等到它提示安裝完成,那麼WordPress的安裝就算大功告成了。
最後稍加配置,再添加諸如內網映射等功能之後,站點就可以對外訪問
詳細的部署文檔可以參考此博客:Docker快速搭建WordPress博客網站
第二種:
因爲Docker的官方服務器部署在國外,拉取鏡像時會很慢,我們換上阿里雲的鏡像加速器。 對於使用 Windows 10的系統,安裝好運行之後,在系統右下角托盤 Docker 圖標內右鍵菜單選擇 Settings,打開配置窗口後左側導航菜單選擇 Docker Engine。在 Registrymirrors一欄中填寫加速器地址https://9cpn8tt6.mirror.aliyuncs.com,之後點擊 Apply 保存後,Docker就會重啓並應用配置的鏡像地址了。
如果嫌以上部署命令太麻煩可以下載一個配置文件docker-compose.yml
,裏面包含了我們要拉取的鏡像信息以及各種配置信息,這樣能省去一行一行敲命令的麻煩。
文件內容如下:
version: “2.0”
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
接着
cmd
進入docker-compose.yml
所在的目錄,輸入命令
docker-compose up -d
拉取並配置完成後可以在瀏覽器地址欄輸入:localhost:8080
開始你的建站之旅
關於聯網
因爲沒捨得買服務器,上面的博客搭建都是在本地電腦上搭建的,暫且不能通過外網訪問到該站點。這裏提供下幾種聯網的思路:
1、假如購買了服務器
第一種:那麼一開始就可以在購買的虛擬主機裏搭建博客,而不必在自己電腦上折騰,建議看看這個如何在阿里雲服務器上搭建wordpress博客?
第二種:把自己電腦上搭建好workpress站點的Docker容器遷移到購買的服務器上去
2、假如沒有購買服務器
試試內網映射,把內網IP映射到公網,使公網也能訪問所搭建的服務:實現內網映射的三種方式
//記一下我在部署過程中出現的bug
1.在輸入sudo apt-get update
後發現終端提示:
E: 無法獲得鎖 /var/lib/dpkg/lock-frontend - open (11: 資源暫時不可用)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
第一種解決:
ps -e | grep apt
然後執行:sudo kill 進程號
第二種解決:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
2.安裝完docker後,執行docker相關命令,出現
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
原因: Docker進程使用Unix Socket而不是TCP端口,而默認情況下,Unix socket屬於root用戶,因此需要root權限才能訪問。
解決方法:
sudo groupadd docker #添加docker用戶組
sudo gpasswd -a $XXX docker #檢測當前用戶是否已經在docker用戶組中,其中XXX爲用戶名。
sudo gpasswd -a $USER docker #將當前用戶添加至docker用戶組
newgrp docker #更新docker用戶組
docker ps #測試docker命令是否可以使用sudo正常使用
3.Docker-compose up時報錯:
ERROR: yaml.scanner.ScannerError: mapping values are not allowed here
in "./docker-compose.yml", line 2, column 9
解決:出現這個錯誤的是因爲yaml格式不正確,谷歌定義的yaml格式太嚴格了,每個冒號後面都必須帶有空格
錯誤
正確
4…執行sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
報錯docker:
Error response from daemon: Conflict. The container name "/mysql" is already in use by container "eb4a52f08fed03d18354b9a2fec9e3a15eea96b5c7285ae7d6625e763e03e5af". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
解決辦法:
查看 docker ps -a
看到之前運行docker容器還沒有退出,導致出現容器重名情況。
使用下面命令,刪除容器,
docker rm 1fabd37a07bf //(鏡像ID)
docker rm a461cde5ec3f
重新執行命令啓動即可。
以上若有存在錯誤的,歡迎交流,請多多指教!