[TOC]
> docker能解決測試、開發、正式服務器運營等不同角色保持相同的環境,這樣能解決因為環境不同引發的問題。
> 也可以拿來做普通的虛擬機來玩,因為輕量級的,所以很好使用。
## 簡易安裝
> 1. git pull “docker-nginx” from gitee.com ,windows下將“docker-nginx配置環境”放在c:/users/xx下
> 2. 安裝PHP
```
docker run --name myphp -d \
-v /c/Users/husilu/docker-nginx/www/default:/var/www/html \
-v /c/Users/husilu/docker-nginx/php/php.ini:/usr/local/etc/php/php.ini:ro \
wangking717/myphp:0.1
```
> 3. 安裝NGINX
```
docker run --name mynginx \
-d -p 81:81 \
-v /c/Users/husilu/docker-nginx/www/default:/usr/share/nginx/html \
-v /c/Users/husilu/docker-nginx/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /c/Users/husilu/docker-nginx/nginx/conf.d:/etc/nginx/conf.d \
-v /c/Users/husilu/docker-nginx/logs:/var/log/nginx \
--link myphp:php \
nginx:1.14.0
```
## 簡易安裝的實現過程
### 1. 創建本地目錄
|-- logs
|-- nginx
| | | -- conf.d
| | | | | -- default.conf
| | | -- nginx.conf
|-- php
| | | -- php.ini
| -- www
| | | | -- default
### 2. Php
```
docker run --name myphp -d php:7.2-fpm
docker cp myphp:/usr/local/etc/php/php.ini-production . 轉移到 /docker/php/php.ini
docker stop myphp && docker rm myphp
docker run --name myphp -d \
-v /c/Users/husilu/docker-nginx/www/default:/var/www/html \
-v /c/Users/husilu/docker-nginx/php/php.ini:/usr/local/etc/php/php.ini:ro \
php:7.2-fpm
```
### 3. 為PHP容器增加擴展
> 1)登錄進入php容器
```
docker exec -it myphp /bin/bash
```
> 2)安裝php擴展
```
apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-install zip \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install mysqli \
&& rm -r /var/lib/apt/lists/*
```
> 3)exit退出容器
```
exit 或 Ctrl + C
```
> 4)提交容器的修改
```
docker commit myphp myphp:0.1
```
> 5)注冊一個https://hub.docker.com,用戶名為wangking717,創建一個repo為myphp
> 6)docker命令符里輸入“docker login”,輸入用戶名和密碼
> 7)打標簽(必須是wangking717/開頭的才可以)
```
docker tag myphp:0.1 wangking717/myphp:0.1
```
> 8)上傳
```
docker push wangking717/myphp:0.1
```
### 4. Nginx
```
docker run --name mynginx \
-d -p 81:81 \
-v /c/Users/husilu/docker-nginx/www/default:/usr/share/nginx/html \
-v /c/Users/husilu/docker-nginx/nginx/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /c/Users/husilu/docker-nginx/nginx/conf.d:/etc/nginx/conf.d \
-v /c/Users/husilu/docker-nginx/logs:/var/log/nginx \
--link myphp:php \
nginx:1.14.0
```
## 參考資料
> https://www.awaimai.com/2120.html