docker 搭建nginx php mysql_docker搭建nginx+php+mysql

docker搭建nginx+php+mysql

官方:Docker、PHP、Laravel

环境:mac、nginx-1.14、php-7.2(多版本)、mysql-5.7

目标:实现本地服务docker化,nginx、php、mysql容器互联、docker容器对外开放

1、获取镜像(官方地址:https://hub.docker.com/)

获取nginx

docker pull nginx:1.14

获取php

docker pull php:5.6-fpm

docker pull php:7.2-fpm

获取mysql

docker pull mysql:5.7

2、先启动MySQL(映射本地MySQL数据目录和配置目录)

docker run --name mysql \

-p 33060:3306 \

-e MYSQL_ROOT_PASSWORD=root \

-v /local/docker/mysql/mysql5.7/data:/var/lib/mysql \

-v /local/docker/mysql/mysql5.7/conf:/etc/mysql \

-d mysql:5.7

配置MySQL

cd /local/docker/mysql/mysql5.7/conf

创建my.cnf 并配置参数并保存

vi my.cnf

重启MySQL

docker restart mysql

3、启动PHP7.2(映射本地的项目目录、php配置、php日志目录)

--link mysql:mysql 表示docker用来链接2个容器 (php7.2访问mysql)

docker run \

--name php7.2 \

--link mysql:mysql \

-v /local/www:/data/www \

-v /local/docker/php/php7.2/conf:/usr/local/etc/php \

-v /local/docker/php/php7.2/logs:/phplogs \

-d php:7.2-fpm

# 配置php.ini

/local/docker/php/php7.2/conf

vi php.ini

重启php7.2

docker restart php7.2

4、启动nginx(映射配置文件目录为本地、本地的配置文件需要手动拷贝一份不然启动不了、映射/data/www为本地的项目目录这个配置的时候需要注意)

docker run -p 80:80 \

--name nginx \

--link php7.2:php7.2 \

-v /local/docker/nginx/nginx1.14/logs:/var/log/nginx \

-v /local/docker/nginx/nginx1.14/etc:/etc/nginx:ro \

-v /local/www:/data/www \

-d nginx:1.14

5、配置nginx配置文件(注意事项:root中/data/www为容器内目录对应本机目录为docker启动时候指定的映射目录、fastcgi_param中需要配置的是php容器中的/data/www目录也是对应本机中的目录、fastcgi_pass中配置的是容器的name) 这里使用的是配置一个简单的laravel项目

fastcgi_pass php7.2:9000; // php7.2为启动时候的link名称

cd /local/docker/nginx/nginx1.14/etc

vi conf.d/default.conf

配置default文件

server

{

listen 80;

server_name laravel.tyl.com;

index index.html index.htm index.php;

root /data/www/laravel/public;

#支持PHP的Fast-CGI 模式

location ~ .*\.(php|php5)?$

{

include fastcgi.conf;

fastcgi_split_path_info ^(.+\.php)(.*)$;

fastcgi_param SCRIPT_FILENAME /data/www/laravel/public/$fastcgi_script_name;

fastcgi_pass php7.2:9000;

fastcgi_index index.php;

}

location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$

{

access_log off;

}

}

重启nginx

docker restart nginx

6、本地配置项目env文件

cd /local/www/laravel

vi .env

laravel中env文件配置DB_CONNECTION=mysql

DB_HOST=mysql

DB_PORT=3306

DB_DATABASE=mysql

DB_USERNAME=root

DB_PASSWORD=root

7、本地访问

nginx:http://localhost

mysql:127.0.0.1:33060

项目地址:laravel.tyl.com

8、php增加扩展(官方文档:https://hub.docker.com/_/php/)

进人容器php7.2

docker exec -it php7.2 /bin/bash

查看扩展

php -m

官方扩展

docker-php-ext-install php_mysql

退出容器后重启php7.2

9、保存镜像(需要在镜像官方网站申请账号)

# 保存为自己的扩展镜像

docker commit --author "taoyl " --message "增加扩展" php7.2 php:7.2-new

# 提交镜像到官方

docker push php:7.2-new

# 停止和删除当前镜像

docker stop php7.2

docker rm php7.2

# 重新启用新的php镜像 此镜像即为包含扩展的镜像

docker run \

--name php7.2 \

--link mysql:mysql \

-v /local/www:/data/www \

-v /local/docker/php/php7.2/conf:/usr/local/etc/php \

-v /local/docker/php/php7.2/logs:/phplogs \

-d php:7.2-new

你可能感兴趣的:(docker,搭建nginx,php,mysql)