Windows 10の下でdockerはnginx+php 7を構築します.2 + mysql5.7+redisおよびマウント

3906 ワード

1.docker for windowsダウンロード
1.1 Windowsホーム版(プロフェッショナル版はこの手順をスキップ)
Windowsの家庭版にはHyper-Vがないので、Hyper-Vを作って専門版に偽装して、後で穴を踏まないようにしました.新しいhyperv.cmdファイル、内容は以下の通りです.
pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL

管理者としてhypervを実行します.cmdファイル.
1.2 Hyper-Vオン
Windowsコントロールパネルでhyper-Vをオンにします.ファミリー版でプロフェッショナル版に偽装する必要がある場合は、cmdで次のコマンドを実行します.
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F

1.3 docker for windowsをダウンロードする
リンク:https://store.docker.com/editions/community/docker-ce-desktop-windows証明書の問題が発生した場合は、その4つの環境変数を削除し(このコンピュータ->プロパティ->高度な設定->環境変数)、管理者としてcmdコマンドを実行します.
docker-machine rm default
@FOR /f "tokens=*" %i IN ('docker-machine env -u') DO @%i

インストール手順に従って歩くと、かわいいクジラのアイコンがインストールが完了したことを示しています.勝手にcmd/power shellを開いてdocker versionを入力し、意外にもバージョン番号が見えます.
1.4共有ディスクの設定
タスクバーのクジラを右クリックし、setting->share drivesを見つけて共有するディスクにチェックを入れ、applyの後にreset->restartすればいいです.チェックを入れると選択に失敗する場合がありますが、よくある問題はファイアウォールで、ネット上には解決策が山積みになっています.ここでは、権限の問題について説明します.gpeditを開くmscは、「ローカルアカウントの共有とセキュリティモデル」を見つけ、「クラシック」に設定すればよい.
Windows 10ファミリー版についてgpedit.を開くことはできません.mscの解決方法は、新しい文書ドキュメントに次のコードを挿入し、接尾辞をcmdに変更し、管理者が実行すればよい.
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause

2 php7.2
docker pull php:7.2-fpm
---
docker run -p 9000:9000 -d --name php-server \
-v (XXX/wwwroot):/usr/share/nginx/html \
php:7.2-fpm
---
docker exec -it php-server /bin/bash
:docker-php-ext-install mysqli          
:exit

3 mysql5.7
docker pull mysql:5.7
---
docker run --name mysql-server \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

4 redis
docker pull redis:latest
---
docker run --name redis-server \
-p 6379:6379 \
-d redis

次にphpに拡張を付ける必要があります
docker exec -it php-server /bin/bash
pecl install igbinary && docker-php-ext-enable igbinary
pecl install redis && docker-php-ext-enable redis          
         ,   yes   no
exit
docker restart php-server
docker restart nginx-server

phpinfoを見るとredis拡張がインストールされていることがわかります
5 nginx
docker pull nginx
---
docker run -p 80:80 -d --name nginx-server \
-v (XXX/conf/nginx.conf):/etc/nginx/nginx.conf \
-v (XXX/conf.d):/etc/nginx/conf.d \
-v (XXX/log):/var/log/nginx \
-v (XXX/wwwroot):/usr/share/nginx/html \
--link php-server:php \				    php      
--link mysql-server:mysql \			    mysql      
--link redis-server:redis \ 		    redis      
nginx
---
docker ps -a  (      )

「()」は、あなた自身の経路や構成に基づいて行われます.興味深いことにnginx.confここにマウントするときwindowsマシンに「Are you trying to mount a directory onto a file(or vice-versa)?Check if the specified host path exists and is the expected type.」この間違いなら、解決策は手順1で、その時私は長い間調べてやっとやっとやっとやっとやっと解決しました.nginxを構成し、conf.dのdefaultを開きます.conf,追加
location ~ \.php$ {
    fastcgi_pass php:9000;
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 

docker-composeリンク