安裝docker nginx容器
docker search nginx
拉取鏡像:
docker pull nginx
生成如下鏡象:
runoob@runoob:~/nginx$ docker images nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 555bbd91e13c 3 days ago 182.8 MB
啓動nginx
docker run --name runoob-nginx-test -p 8081:80 -d nginx
runoob-nginx-test
容器名稱。- the
-d
設置容器在在後臺一直運行。 - the
-p
端口進行映射,將本地 8081 端口映射到容器內部的 80 端口。
我們可以使用 docker ps 命令查看容器是否有在運行:
nginx 部署
1.創建目錄:
mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf
拷貝容器內 Nginx 默認配置文件到本地當前目錄下的 conf 目錄,容器 ID 可以查看 docker ps 命令輸入中的第一列:
docker cp 6dd4380ba708:/etc/nginx/nginx.conf ~/nginx/conf
- www: 目錄將映射爲 nginx 容器配置的虛擬目錄。
- logs: 目錄將映射爲 nginx 容器的日誌目錄。
- conf: 目錄裏的配置文件將映射爲 nginx 容器的配置文件。
$ docker run -d -p 8082:80 --name runoob-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
命令說明:
-
-p 8082:80: 將容器的 80 端口映射到主機的 8082 端口。
-
--name runoob-nginx-test-web:將容器命名爲 runoob-nginx-test-web。
-
-v ~/nginx/www:/usr/share/nginx/html:將我們自己創建的 www 目錄掛載到容器的 /usr/share/nginx/html。
-
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:將我們自己創建的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf。
-
-v ~/nginx/logs:/var/log/nginx:將我們自己創建的 logs 掛載到容器的 /var/log/nginx
Docker 安裝 PHP
拉取鏡像
# 拉取鏡像
php-fpm$ docker search php
#運行鏡像
docker run --name myphp-fpm -v ~/nginx/www:/www -d php:5.6-fpm
命令說明:
--name myphp-fpm : 將容器命名爲 myphp-fpm。
-v ~/nginx/www:/www : 將主機中項目的目錄 www 掛載到容器的 /www
配置nginx
在該目錄下添加 ~/nginx/conf/conf.d/runoob-test-php.conf 文件,內容如下:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;
include fastcgi_params;
}
}
啓動:
docker run --name runoob-php-nginx -p 8083:80 -d \
-v ~/nginx/www:/usr/share/nginx/html:ro \
-v ~/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
--link myphp-fpm:php \
nginx
- -p 8083:80: 端口映射,把 nginx 中的 80 映射到本地的 8083 端口。
- ~/nginx/www: 是本地 html 文件的存儲目錄,/usr/share/nginx/html 是容器內 html 文件的存儲目錄。
- ~/nginx/conf/conf.d: 是本地 nginx 配置文件的存儲目錄,/etc/nginx/conf.d 是容器內 nginx 配置文件的存儲目錄。
- --link myphp-fpm:php: 把 myphp-fpm 的網絡併入 nginx,並通過修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,讓 nginx 通過 php:9000 訪問 php-fpm。
配置mysql
拉取鏡像
docker pull mysql:5.6
運行
docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令說明:
-
-p 3306:3306:將容器的 3306 端口映射到主機的 3306 端口。
-
-v $PWD/conf:/etc/mysql/conf.d:將主機當前目錄下的 conf/my.cnf 掛載到容器的 /etc/mysql/my.cnf。
-
-v $PWD/logs:/logs:將主機當前目錄下的 logs 目錄掛載到容器的 /logs。
-
-v $PWD/data:/var/lib/mysql :將主機當前目錄下的data目錄掛載到容器的 /var/lib/mysql 。
-
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用戶的密碼。