文章寫了好久了,慢慢整理一下發出來。html
目標
部署好mysql,php,nginx,運行一個php程序mysql
安裝Docker
看這個:https://yeasy.gitbooks.io/docker_practice/nginx
建立資源文件夾
既然安裝好了Docker,咱們建立容器後,咱們須要映射一些配置文件或網站程序文件到宿主機,因此咱們建立一些文件夾來存放這些東西,我是建立了如下這些文件夾,你能夠按照本身平時的習慣來建立。git
/data /mysql 存放數據庫備份 /nginx nginx配置文件 /conf
/logs
/apache2 apache2配置文件
/conf
/extra
/logs
/php
/wwwroot 網站文件 /wwwlogs 日誌 /source 程序源代碼 /download 下載目錄
部署Mysql
1. 拉取鏡像
# docker pull mysql:5.7
2. 運行容器
1 # docker run \ 2 -d \ 3 -p 3306:3306 \ 4 -e MYSQL_ROOT_PASSWORD=12345678910 \ 5 --name m_mysql mysql:5.7
參數說明
-d 讓容器在後臺運行
-p 添加主機到容器的端口映射,前面是映射到本地的端口,後面是須要映射的端口
-e 設置環境變量,MYSQL_ROOT_PASSWORD這裏是設置mysql的root用戶的初始密碼
--name 容器的名字,隨便取,可是必須惟一web
ps:其實咱們能夠僅僅使用docker run命令就好了。docker run會先去pull,而後再create。我的習慣先把鏡像pull下來,在run的時候會很快。sql
3. 進入容器
# docker exec -it m_mysql /bin/bash
參數說明
-t 在容器裏生產一個僞終端
-i 對容器內的標準輸入 (STDIN) 進行交互docker
容器中默認是沒有vim的,因此咱們首先要安裝vim,須要注意的是安裝前記得先執行apt-get update命令,否則安裝會出現問題。數據庫
4. 開啓Mysql遠程鏈接
這步你固然也能夠不開啓,可使用ssh通道來鏈接,可是我這裏記一筆。這裏是5.7,注意了。apache
1.進入mysql
# mysql -uroot -p12345678910
2.選擇數據庫
> use mysql
3.開啓遠程鏈接
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
> FLUSH PRIVILEGES;
4.重啓
# service mysqld restart
這樣就能夠經過公網IP鏈接了,若是仍是不行,請看看防火牆(自身防火牆或者各大雲服務商的安全組配置)。
部署PHP
1. 拉取鏡像
# docker pull bitnami/php-fpm:7.0
2. 運行容器
1 # docker run \ 2 -d \ 3 -p 9000:9000 \ 4 -v /data/wwwroot:/usr/share/nginx/html \ 5 --link m_mysql:mysql \ 6 --name m_phpfpm bitnami/php-fpm:7.0
參數說明
-d 讓容器在後臺運行
-p 添加主機到容器的端口映射
-v 添加目錄映射
–-name 容器的名字,隨便取,可是必須惟一
--link link 是在兩個contain之間創建一種父子關係,父container中的web,能夠獲得子container db上的信息。
經過link的方式建立容器,咱們可使用被Link容器的別名進行訪問,而不是經過IP,解除了對IP的依賴。
3. 建立php文件
在/data/wwwroot文件夾中建立一個文件夾default
,表明一個默認的工做目錄,在default
中建立一個文件
# touch index.php
編輯index.php
<?php
echo "hello!";
?>
這時候你進php容器,在/usr/share/nginx/html
文件夾中也能看到咱們建立的index.php文件,由於咱們設置了目錄映射。這樣咱們就能夠直接在宿主機直接更改,而不用進容器修改。
配置Nginx
1. 拉取鏡像
# docker pull nginx
2. 運行容器
咱們先運行無掛載的容器,拿到nginx的一些配置文件
# docker run \ -d \ -p 80:80 \ --name m_nginx nginx:latest
/etc/nginx/
文件夾中,咱們須要的掛載
nginx.conf
和
conf.d
文件夾中的配置文件,由於是咱們平時須要頻繁更改的配置,因此,咱們將他們複製到宿主機上。
退出命令行,不要使用exit,由於exit會讓容器中止。這裏使用ctrl + p + q
來退出容器。
而後使用docker cp
操做複製出文件
# docker cp m_nginx:/etc/nginx/nginx.conf /data/nginx # docker cp m_nginx:/etc/nginx/conf.d/default.conf /data/nginx/conf