安裝Docker
在官方網站直接下載符合你操作系統的版本,安裝即可。由於國內的網絡下載Docker鏡像實在是太慢,我們不妨使用國內的加速服務,教程可以參見:https://yeasy.gitbooks.io/docker_practice/content/install/mirror.html
Nginx
首先,我們先拉取一個Nginx鏡像,很簡單:
docker pull nginx
使用docker images
查看一下我們剛剛拉取下來的鏡像
實例化該鏡像,我們把實例化的鏡像稱之爲容器,鏡像和容器的關係就好比類和實例的關係。
//-p 是指定本機端口到容器端口
//其中8080是指主機的端口,而80是指容器的端口
docker run -p 80:8080 nginx
//具體細節可輸入docker run --help查詢
我們先看一下端口的狀態
netstat -na|grep 8080
或者通過 docker port name 查看端口信息
Nginx容器啓動之後,訪問localhost,熟悉的歡迎頁面出現了吧,不用我們下載,編譯,安裝,直接實例化然後啓動就好了,多麼讓人幸福的一件事。
瀏覽器訪問
切回命終端,發現終端打印出了一堆log信息,我可不想整天盯着這些無趣的信息看,讓Nginx進入守護運行吧。
docker run -p 80:8080 --name cool_nginx -d nginx
//-p是端口參數,給上-d參數表示容器是守護程序會進入後臺運行,--name則是重新給容器命名。成功之後,用docker ps來查看當前已經啓動的容器。
現在我們進入這個容器,並修改這個Nginx默認網頁。
//frosty_bose 爲容器名稱 可通過docker ps 查詢
docker exec -it frosty_bose bash
echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
掛載一個本地目錄到容器,就不用每次都進入到容器中修改代碼了,當然的將E:\project\maibuapi\public替換成你自己的文件目錄。
docker run -p 8080:80 -v E:\project\maibuapi\public:/usr/share/nginx/html/ -d nginx
PHP
docker pull php:7.2-fpm
使用7.2版本的PHP,你可以選擇其他版本的PHP。
docker run --name liang_php -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm
使用docker ps可以看到,Nginx和FPM都已經啓動了。
那麼PHP如何和Nginx鏈接起來呢?很簡單,Docker爲我們做好了一切,只需要一個參數就可以將兩個容器鏈接起來。
--link cool_php_fpm
我們都知道,Nginx默認是不解析PHP文件的,所以還需要修改一下配置,不需要進入Nginx容器裏去修改,我們在當前文件夾下,新建一個default_nginx.conf文件,寫入如下內容:
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php?$ {
fastcgi_pass liang_php:9000;
#和別名保持統一
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
然後用docker rm nginx
命令刪除掉原先的Nginx容器,掛載該配置文件重新實例化:
docker run -p 8080:80 --name liang_nginx -d -v E:\project\Docker\test:/usr/share/nginx/html/ -v E:\project\Docker\test\default_nginx.conf:/etc/nginx/conf.d/default.conf:ro --link liang_phpnginx
創建php文件
<?php
echo phpinfo();
mysql
//默認爲8版本會出現密碼問題
docker pull mysql
然後啓動:
docker run -d --name liang_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql
-e
參數是給給定環境變量,這裏我們設定MySQL的密碼是123456
。
鏈接到MySQL容器:docker exec -it liang_mysqlbash
登陸MySQL:mysql -uroot -p123456
PHP如何鏈接到MySQL,相信你也知道了,對的還是使用–link參數,我們刪除掉colphp容器,重新構建
docker run --name colphp --link coolmysql -v E:\project\Docker\test:/usr/share/nginx/html/ -d php:7.2-fpm
鏈接之後,PHP容器和MySQL容器能夠通信了,但是還是不夠呢(堅持一下,最後一步了),初始PHP是沒有安裝MySQL擴展的,安裝擴張也極其容易,先進入到PHP容器:docker exec -it colphp bash
然後用docker-php-ext-install
命令安裝:docker-php-ext-install mysqli exit
ok,我們重啓PHP容器:docker restart colphp
docker-compose
還在研究中。。。。。。github地址