dokcer 配置php+mysql_nginx

安裝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 用戶的密碼。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章