安裝MySQL
獲取映象
docker pull mysql # 獲取mysql映象
建立測試容器
# a347a5928046 MySQL映象ID # mysql_test 測試容器名稱 # /mysql/conf 宿主機mysql配置資料夾 docker run -d -p 23306:3306 --name mysql_test a347a5928046 # 複製/etc/mysql/my.cnf到宿主主機 docker cp mysql_test:/etc/mysql/my.cnf /mysql/conf
建立正式容器
# 上面的測試容器可刪除 docker run -d -p 23306:3306 --name mysql8 \ -v $PWD/mysql/conf/my.cnf:/etc/mysql/my.cnf \ -v $PWD/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ --privileged=true a347a5928046
安裝Nginx
對映目錄結構
docker_www # docker_www 主目錄 -mysql # mysql --conf # 放配置檔案 --data # 同步資料資料夾 -nginx # nginx --conf.d # 擴充套件配置 --dq.conf # 新增配置檔案 --logs # 日誌 --nginx.conf # nginx主配置檔案 -www # www目錄->/usr/share/html --index.html # 測試html檔案,寫入 <p>hello docker nginx</p> --info.php # 寫入 phpinfo
獲取映象
docker pull nginx # 獲取nginx基礎映象
建立測試容器
# ae2feff98a0c nginx的映象ID # PWD 當前目錄, 我這裡進入的是docker_www目錄 docker run -d -p 8080:80 -v $PWD/www:/usr/share/html --name nginx_test ae2feff98a0c # 測試訪問 curl 127.0.0.1:8080 #輸出 <p>hello docker nginx</p>
建立可掛載目錄Nginx容器
# ae2feff98a0c nginx的映象ID # PWD 當前目錄, 我這裡進入的是docker_www目錄 # nginx.conf 可以從上一個測試容器中複製出來,操作命令如下: # docker cp 容器名稱:/etc/nginx/nginx.conf 宿主機目錄 # docker cp new_nginx_web_1:/etc/nginx/nginx.conf . docker run -d -p 8080:80 --name new_nginx_web_1 / -v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf / -v $PWD/nginx/conf.d:/etc/nginx/conf.d / -v $PWD/www:/usr/share/nginx/html / -v $PWD/nginx/logs:/var/log/nginx / ae2feff98a0c
安裝PHP
獲取php映象
docker pull php:7.1-fpm # 獲取php基礎映象
建立測試PHP映象
# 建立容器 # 404422fc039e php映象ID docker run -d -v $PWD/www:/var/www/html -p 9000:9000 --name phpfpm_test 404422fc039e
建立正式PHP映象
# 先從上一個測試映象中將配置檔案都複製出來 # 當前處於php目錄下 docker cp phpfpm_test:/usr/local/var/log log # 複製日誌 docker cp phpfpm_test:/usr/local/etc conf # 複製配置檔案 # 建立 docker run -d -p 9000:9000 \ -v $PWD/php/conf:/usr/local/etc \ -v $PWD/php/log:/usr/local/var/log \ -v $PWD/www:/var/www/html \ --link mysql8:mysql8.0 # 關聯mysql8容器 --name phpfpm_7.1 404422fc039e ### notcie ### 如果mysql無法執行,需要到容器中開啟pdo擴充套件
映象互聯
Nginx 連結 PHP
# ae2feff98a0c nginx的映象ID # PWD 當前目錄, 我這裡進入的是docker_www目錄 # php7.1設定的連結別名,在nginx容器中可以使用 docker run -d -p 8080:80 --name new_nginx_web_1 \ -v $PWD/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v $PWD/www:/usr/share/nginx/html \ -v $PWD/nginx/logs:/var/log/nginx \ --link phpfpm_test:php7.1 ae2feff98a0c
conf.d/dq.conf檔案配置
# php7.1 就是在建立的容器時 `--link phpfpm_test:php7.1` # 在容器中的/etc/hosts檔案中,172.17.0.3 php7.1 server { charset utf-8; client_max_body_size 128M; listen 80; ## listen for ipv4 #listen [::]:80 default_server ipv6only=on; ## listen for ipv6 server_name mine.nginx.com; root /var/www/html; index index index.html index.php; location / { #-e表示只要filename存在,則為真 if (!-e $request_filename){ rewrite ^(.*)$ /index.php?s=$1 last; break; } # Redirect everything that isn't a real file to index.php try_files $uri $uri/ /index.php$is_args$args; } # uncomment to avoid processing of calls to non-existing static files by Yii #location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ { # try_files $uri =404; #} #error_page 404 /404.html; # deny accessing php files for the /assets directory location ~ ^/assets/.*\.php$ { deny all; } location ~ \.php$ { root /var/www/html; fastcgi_pass php7.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; #include fastcgi_params; #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; #fastcgi_pass 172.17.0.3:9000; #fastcgi_pass unix:/var/run/php5-fpm.sock; #try_files $uri =404; } location ~* /\. { deny all; } }
測試請求
curl 127.0.0.1:8080/info.php
本作品採用《CC 協議》,轉載必須註明作者和本文連結