Docker簡單集成php開發環境

安裝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地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章