Docker搭建開發環境(Nginx+MySQL+PHP)


注意事項

1、像MySQL配置文件、Nginx配置文件、網站根目錄這種比較經常操作的需要先使用 docker cp 將文件從容器里復制到主機目錄,docker run的時候直接掛載目錄就可以了

2、docker run MySQL和Nginx的時候注意使用 --link實現容器之間通信

3、運行容器的時候注意使用 --ip 固定容器IP

安裝 MySQL

mysql 需要掛載的目錄

/var/lib/mysql
/etc/mysql/conf.d

掛載詳情

# 主機目錄:容器目錄
~/web/mysql/data:/var/lib/mysql 
~/web/mysql/conf:/etc/mysql/conf.d 

文件備份

將mysql的配置文件,自帶數據庫,sock配置 復制到主機目錄

# docker cp container_ID:容器目錄 主機目錄
docker cp 2d19ae0acd5d:/var/lib/mysql ~/web/mysql/data
docker cp 2d19ae0acd5d:/etc/mysql/conf.d  ~/web/mysql/conf

目錄分解

docker run 
--name mysql # 指定容器名稱
-e MYSQL_ROOT_PASSWORD=root  # 初始化root用戶的密碼為root
-p 3307:3306 # 將容器的3306端口映射到主機的3307端口
--privileged=true # 給容器加上特定的權限,否則可能會出現常見容器失敗的情況
-v ~/web/mysql/data:/var/lib/mysql # 掛載目錄 mysql數據文件
-v ~/web/mysql/conf:/etc/mysql/conf.d # 掛載目錄 mysql配置文件
--restart=always # 設置失敗自動重啟   可寫為 --restart=on-failure:5  最多重啟五次
-d mysql:5.7

命令實現

docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3307:3306 --privileged=true -v ~/web/mysql/data:/var/lib/mysql -v ~/web/mysql/conf:/etc/mysql/conf.d --restart=always -d mysql:5.7

安裝PHP

需要掛載的目錄

/var/www/html 

掛載詳情

# 主機目錄:容器目錄
~/web/www/:/var/www/html 

文件備份

# docker cp container_ID:容器目錄 主機目錄
docker cp 7da668050b8a:/var/www/html /docker-data/web/www

目錄分解

docker run 
--name php 
-p 9000:9000 
--privileged=true 
-v ~/web/www/:/wwwroot 
--link mysql:mysql # 使用link實現兩個容器之間的通信
--restart=always 
-d
php:7.2-fpm

命令實現

docker run --name php -p 9000:9000 --privileged=true -v ~/web/www/:/wwwroot --link mysql:mysql --restart=always -d php:7.2-fpm

擴展安裝

# 進入容器執行命令安裝擴展
docker-php-ext-install [擴展名稱]

# 安裝GD庫
apt update  #更新軟件源
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev #安裝各種庫
docker-php-source extract #解壓源碼
cd /usr/src/php/ext/gd  #gd源碼文件夾
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2   #准備編譯
docker-php-ext-install gd   #編譯安裝
php -m | grep gd
docker restart [container ID]#重啟容器

安裝Nginx

需要掛載的目錄

/usr/share/nginx/html 
/etc/nginx/conf.d 

掛載詳情

# 主機目錄:容器目錄
~/web/www:/usr/share/nginx/html 
~/web/nginx/conf.d:/etc/nginx/conf.d 

文件備份

# docker cp container_ID:容器目錄 主機目錄
docker cp e0babc8a32ad:/usr/share/nginx/html ~/web/www
docker cp e0babc8a32ad:/etc/nginx/conf.d ~/web/nginx/conf.d

目錄分解

docker run 
--name nginx 
-p 8080:80  
--privileged=true 
-v ~/web/www:/wwwroot
-v ~/web/nginx/conf.d:/etc/nginx/conf.d 
--link php:php 
--restart=always 
-d 
nginx

命令實現

docker run --name nginx -p 8080:80  --privileged=true -v ~/web/www:/wwwroot -v ~/web/nginx/conf.d:/etc/nginx/conf.d --link php:php --restart=always -d nginx

Nginx配置文件參考

server {
        listen       80;
        server_name  tplay.yulongcode.com;

        root   /wwwroot/tplay/public; # 項目在容器里的目錄
        index index.php index.html index.htm;

        location / {
            if (!-e $request_filename){
                   rewrite  ^(.*)$  /index.php?s=$1  last;   break;
            }
        }

        error_page   500 502 503 504  /50x.html;
     
        location ~ \.php$ {
            fastcgi_pass   PHP容器IP:PHP端口;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
            include        fastcgi_params;
	   }
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM