官方文档:Docker、PHP
环境:mac、nginx-1.14、php-5.6、php-7.2、mysql-5.7
目标:实现本地服务Docker化,nginx、php、mysql容器互联、docker容器对外开放
前期准备:Docker安装、Mac上启动docker
获取镜像
#获取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
启动mysql部分
#需要新建本地目录,启动后本地可以查看命令 `docker ps`
docker run --name mysql \ #启动docker名称为mysql
-p 33060:3306 \ #映射本地端口33061到容器的端口3306
-e MYSQL_ROOT_PASSWORD=root \ #root用户密码为root
-v /local/docker/mysql/mysql5.7/data:/var/lib/mysql \ #挂在本地目录到容器的mysql数据目录
-v /local/docker/mysql/mysql5.7/conf:/etc/mysql \ #挂在本地目录到容器的mysql配置目录
-d mysql:5.7 #使用镜像
#配置mysql
cd /local/docker/mysql/mysql5.7/conf
# 创建my.cnf 并配置参数并保存
vi my.cnf
# 重启MySQL
docker restart mysql
启动PHP部分
#参数部分参考mysql
docker run \
--name php7.2 \
--link mysql:mysql \ #这里需要提醒下,在php容器中使用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
#php5.6部分
docker run \
--name php5.6 \
--link mysql:mysql \ #这里需要提醒下,在php容器中使用mysql表示连接到mysql容器
-v /local/www:/data/www \
-v /local/docker/php/php5.6/conf:/usr/local/etc/php \
-v /local/docker/php/php5.6/logs:/phplogs \
-d php:5.6-fpm
# 配置php.ini
/local/docker/php/php5.6/conf
vi php.ini
# 重启php5.6
docker restart php5.6
#php安装扩展 可以参考官方(docker文档)[https://hub.docker.com/_/php/]有多个安装方法
# 进人容器php7.2
docker exec -it php7.2 /bin/bash
# 查看扩展
php -m
# 官方扩展
docker-php-ext-install php_mysql
启动nginx部分
#映射配置文件目录为本地、本地的配置文件需要手动拷贝一份不然启动不了、映射/data/www为本地的项目目录这个配置的时候需要注意
docker run -p 80:80 \
--name nginx \
--link php7.2:php7.2 \
--link php5.6:php5.6 \
-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
#配置nginx配置文件(一个简单的laravel配置)
cd /local/docker/nginx/nginx1.14/etc
vi conf.d/default.conf
#配置default文件
server
{
listen 80;
server_name laravel.test.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_pass php5.6:9000;
fastcgi_index index.php;
}
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$
{
access_log off;
}
}
# 重启nginx
docker restart nginx
相关问题
本地访问过慢,原因是由于docker挂载导致,解决方案(docker中使用 :cached)
#例如nginx挂载目录
docker run -p 80:80 \
--name nginx \
--link php7.2:php7.2 \
--link php5.6:php5.6 \
-v /local/docker/nginx/nginx1.14/logs:/var/log/nginx:cached \
-v /local/docker/nginx/nginx1.14/etc:/etc/nginx:ro \
-v /local/www:/data/www \
-d nginx:1.14
本地相关地址:
nginx: http://localhost
mysql: 127.0.0.1:33060
项目:http://laravel.test.php 需要配置host
网友评论