系統環境:centos7.7
鏡像image 版本:phpmyadmin/phpmyadmin(截止2020.01.10最新版)
參考文章:https://blog.csdn.net/a2589293499/article/details/102938724
一、根目錄下的phpmyadmin訪問。
1、查看版本。
2、拉取最新版本。視網絡速度等待~~
3、查看鏡像。
4、運行。先啟動一個臨時容器,假設你已經有一個可ip連接的mysql數據庫。
docker run --name my_phpadmin_2020 -d -p 8001:80 --restart=always -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" phpmyadmin/phpmyadmin
5、訪問。瀏覽器訪問ip:8001。報錯 mysqli_real_connect(): (HY000/2002): No route to host ,問題原因是配置的訪問ip不對
6、解決問題。復制phpmyadmin 容器的配置文件config.sample.inc.php到宿主機config.inc.php。
設置 $cfg['Servers'][$i]['host'] = '你的ip地址',保存。
7、刪除容器 my_phpadmin_2020。然后重啟一個掛載配置文件的容器。
docker run --name my_phpadmin_2020 -d -p 8001:80 --restart=always -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php phpmyadmin/phpmyadmin
參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e 設定一些必須的環境變量。
-e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
-e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 設定數據庫的訪問地址。
-v 掛載宿主機文件到容器。
-v /www/my_admin/config.inc.php:/var/www/html/config.inc.php 綁定掛載文件
8、重新訪問登錄,成功。
生活不止眼前的苟且,還有詩和遠方~~
原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。
9、如果有人也是在vmware 虛擬機中配置的,仍報錯mysqli_real_connect(): (HY000/2002): No route to host 的話,請檢查端口是否已添加到防火牆。
原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。
二、下面我們介紹如何在nginx配置非根目錄節點的 phpmyadmin。
1、前6步與第一部分一樣,從第7步重啟容器時多加一個參數:-e PMA_ABSOLUTE_URI=你的ip:8001/phpmyadmin,由於前面的my_phpadmin_2020沒有刪除,此處我們重命名為my_phpadmin_2019。
docker run --name my_phpadmin_2019 -d -p 8001:80 --restart=always -e PMA_ABSOLUTE_URI=http://192.168.197.129/phpmyadmin -e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 -e TZ="Asia/Shanghai" -v /www/my_admin/config.inc.php:/var/www/html/config.inc.php phpmyadmin/phpmyadmin
參數解析:
-d 后台運行容器,並返回容器ID;
--name 為容器起一個容易區分且容易書寫的名字
-p 映射宿主機端口到容器端口,宿主機端口:容器端口
--restart=always 機器重啟時自動啟動容器
-e 設定一些必須的環境變量。
-e TZ="Asia/Shanghai" 設定時區為上海,強烈建議國內設定,否則容器內打印的所有日志時間都會差8小時。
-e PMA_HOST=192.168.197.129 -e PMA_PORT=3306 設定數據庫的訪問地址。
-e PMA_ABSOLUTE_URI=http://192.168.197.129/phpmyadmin 反向代理路徑,路徑名字可以自己起名,此處的ip也可以使用上線后的域名。
-v 掛載宿主機文件到容器。
-v /www/my_admin/config.inc.php:/var/www/html/config.inc.php 綁定掛載文件
2、訪問。此時我們在訪問ip:8001頁面能顯示,但是登錄會提示session錯誤。我們配置了上面的反向代理路徑為ip/phpmyadmin,但此時直接訪問/phpmyadmin頁面也報錯。
3、使用nginx配置phpmyadmin訪問。
上一篇(https://www.cnblogs.com/jying/p/12182715.html)已介紹nginx docker的搭建,本文直接修改nginx.conf配置,內容如下。
# user root; worker_processes 8; events { worker_connections 10240; } http { include mime.types; default_type application/octet-stream; log_format main '$host "$request" $remote_addr $remote_user [$time_local] $status $request_time $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main;# 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處 keepalive_timeout 300; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; send_timeout 300; client_max_body_size 200m; sendfile on; #tcp_nopush on; #gzip on; limit_req_zone $binary_remote_addr zone=req_limit_per_ip_second:1m rate=10r/s; limit_req_zone $binary_remote_addr zone=req_limit_per_ip_minute:10m rate=100r/s; # server{ listen 80; server_name mytest; # location ~ .*\.(php|php5|jsp)$ { # deny all; # } # location / { if ($document_uri ~* ".*\.(php|php5|jsp)$") { # if中不能使用 deny 和 allow return 404; } root /usr/share/nginx/html; # 這個地址竟然可以是docker里面的絕對路徑!!!,因為-v掛載到了此處 index index.html index.htm; access_log /var/log/nginx/root.log main; } # location /phpmyadmin/ { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Host $server_name; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://192.168.197.129:8001/; # phpmyadmin 真實訪問路徑 access_log /var/log/nginx/phpmyadmin.log main; } } }
4、重啟nginx容器。訪問ip/phpmyadmin正常~~
原文地址:https://www.cnblogs.com/jying/p/12177746.html
作者:一定會去旅行
歡迎任何形式的轉載,但請務必注明出處。
限於本人水平,如果文章和代碼有表述不當之處,還請不吝賜教。
5、如果有人也是在vmware centos虛擬機中配置的,請記得添加防火牆端口權限~~
6、配置完成~~
~~~~~ 手動分割線 ~~~~~~~~~~~~~~~~~·
本文的難點是nginx配置phpmyadmin非根目錄訪問,如果是根目錄其實直接配置就能訪問,但是非根目錄必須要配置 PMA_ABSOLUTE_URI 參數用於反向代理,特別感謝文章: https://stackoverflow.com/questions/44499620/phpmyadmin-inside-docker-container-via-nginx-reverse-proxy
stackoverflow.com 依然是最強大的解決問題基地!!!