Docker nginx+php74+mysql57, 並安裝gd和mysql擴充套件
阿新 • • 發佈:2020-07-11
執行docker:
sudo systemctl start docker
0.建立docker網路:
docker network create --subnet=172.18.0.0/24 mxd
1. 複製配置檔案到宿主機:
# 建立宿主機目錄結構 mkdir -p /www/docker/nginx/logs mkdir -p /www/docker/php/php74 mkdir -p /www/web # 建立 nginx 容器 docker run -d --name nginx --network mxd nginx # 複製 nginx 配置檔案 docker cp nginx:/etc/nginx/conf.d /www/docker/nginx docker cp nginx:/etc/nginx/nginx.conf /www/docker/nginx # 建立 php 容器 docker run -d --name php74 --network mxd php:7.4-fpm # 複製 php 配置檔案 docker cp php74:/usr/local/etc/php-fpm.d/www.conf /www/docker/php/php74 docker cp php74:/usr/local/etc/php/php.ini-development /www/docker/php/php74/php.ini # 複製完成後銷燬容器 docker rm-vf nginx php74
2. 建立容器, 掛載目錄:
# 建立 nginx 容器 # -v 說明: # 第1個: 掛載 nginx 主配置檔案 # 第2個: 掛載 nginx 站點配置目錄 # 第3個: 掛載日誌 # 第4個: 掛載 html 檔案目錄 docker run -d --name nginx -p 80:80 -p 443:443 --network mxd --ip 172.18.0.2 \ -v /www/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /www/docker/nginx/conf.d:/etc/nginx/conf.d \-v /www/docker/nginx/logs:/var/log/nginx \ -v /www/web:/www/web \ nginx # 建立 php 容器 # -v 說明: # 第1個: 掛載 php-fpm 配置檔案 # 第2個: 掛載 php 配置檔案 # 第3個: 掛載 html 檔案目錄 docker run -d --name php74 -p 9000:9000 --network mxd --ip 172.18.0.4 \ -v /www/docker/php/php74/www.conf:/usr/local/etc/php-fpm.d/www.conf \ -v /www/docker/php/php74/php.ini:/usr/local/etc/php/php.ini \ -v /www/web:/www/web \ php:7.4-fpm
3. 安裝php擴充套件gd iconv pdo_mysql
參考:https://hub.docker.com/_/php
https://blog.csdn.net/lggirls/article/details/89395827
https://www.jianshu.com/p/20fcca06e27e
# 進入容器 docker exec -it php74 bash # 安裝`pdo_mysql`擴充套件: docker-php-ext-install pdo_mysql # 單獨安裝`gd`擴充套件 apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd # 安裝`gd`和`iconv`擴充套件(如果失敗, 請去官網複製): apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd # 安裝`zip`擴充套件: apt-get update && apt-get install -y --no-install-recommends libzip-dev \ && rm -r /var/lib/apt/lists/* \ && docker-php-ext-install -j$(nproc) zip # 安裝`intl`擴充套件: apt-get update && apt-get install -y zlib1g-dev libicu-dev g++ \ && docker-php-ext-configure intl \ && docker-php-ext-install intl # 大一統命令(安裝`pdo_mysql`,`gd`,`iconv`,`zip`,`intl`): apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev --no-install-recommends libzip-dev zlib1g-dev libicu-dev g++ \ && docker-php-ext-install pdo_mysql \ && docker-php-ext-install -j$(nproc) iconv \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install -j$(nproc) zip \ && docker-php-ext-configure intl \ && docker-php-ext-install intl # 退出容器 exit
4. 配置站點:
4.1. 預設站點:
cd /www/docker/nginx/conf.d vi default.conf
完整程式碼:
server { listen 80; listen [::]:80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; root /www/web; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { # root html; fastcgi_pass php74:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi_params; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
4.2. 預設其它站點:
在/www/docker/nginx/conf.d建立xxx.conf檔案,修改為對應內容即可
4.3. 上傳網站程式碼;
4.4. 重啟nginx:
docker restart nginx # 測試配置檔案是否正確 docker exec nginx nginx -t # 過載配置檔案 docker exec nginx nginx -s reload
4.5 訪問網站 ip/index.php
5. 安裝mysql
5.1. 複製配置檔案到宿主機:
# 建立目錄(該目錄在啟動映象之前要保證為空, 否則密碼可能錯誤) mkdir -p /www/docker/mysql/mysql57/data # 建立容器 docker run -d --name mysql57 --network mxd -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 # 複製配置檔案 docker cp mysql57:/etc/mysql/conf.d /www/docker/mysql/mysql57 docker cp mysql57:/etc/mysql/mysql.conf.d /www/docker/mysql/mysql57 # 刪除容器 docker rm -vf mysql57
5.2. 建立mysql容器,掛載目錄:
docker run -d --name mysql57 --network mxd --ip 172.18.0.5 \ -v /www/docker/mysql/mysql57/data:/var/lib/mysql \ -v /www/docker/mysql/mysql57/conf.d:/etc/mysql/conf.d \ -v /www/docker/mysql/mysql57/mysql.conf.d:/etc/mysql/mysql.conf.d \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:5.7
5.3. 測試連線(密碼:123456):
docker exec -it mysql57 mysql -uroot -p