资讯专栏INFORMATION COLUMN

docker搭建php开发环境

yibinnn / 2176人阅读

摘要:安装官网命令行安装用命令安装的童鞋注意,长城宽带会让你非常失望安装包安装如果需要手动下载,请点击以下链接下载或版本的。这里配置不好的化,文件运行不起来的。

这里教大家用docker安装nginx、php、mysql,搭建一套完整的本地开发环境,这里以mac为列,windons安装大同小异,可以尝试一下。
1. 安装docker

官网:https://www.docker.com/

1.1 命令行安装

用命令安装的童鞋注意,长城宽带会让你非常失望!

brew cask install docker
1.2 安装包安装

如果需要手动下载,请点击以下链接下载 Stable 或 Edge 版本的 Docker for Mac。

1.3 设置镜像

至于为什么要设置镜像嘛,我只能说呵呵

我这里设置了http://f1361db2.m.daocloud.io

具体方法如下:


2. 安装nginx 2.1 安装
docker pull nginx
2.2 准备好本地配置文件

在本地准备好nginx的配置文件,这里一定要记好,运行nginx的时候要用

/Users/sole/docker/nginx

2.3 准备好本地网站存放的目录

在本地准备好的网站存放目录以及网站,记好,后续有用

2.4 运行nginx
docker run 
--name nginx_server 
-p 80:80 
-v ~/Sites:/etc/www 
-v ~/docker/nginx/conf.d:/etc/nginx/conf.d 
--link php_server:php 
-d nginx 

各个参数的解释:
各个参数配置遵循这个规则: 本地目录:容器地址

--name 是tag名字

-p 端口映射

-v 配置文件夹

-d 后台运行

--link 这个还不怎么明白,大概意思就是把php_server并入nginx_server, 然后在nginx的配置文件里面配置的时候,直接用php,请看nginx配置代码;当然这个也不是必须这么做,知识这么做很方便;如果不用这个方法,可以运行docker inspect php_server | grep ""IPAddress""获取容器IP,把IP放在这里也可以。这里配置不好的化,php文件运行不起来的。

location ~ .php$ {
    fastcgi_pass php:9000;
    fastcgi_index index.php; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    include fastcgi_params; 
} 
2.5 确保nginx已经启动

运行 docker ps -a 来看查nginx是否启动成功

看到这里,只能说明nginx已经实例化了,但是并不确定是否启动,这个时候可以用工具来检查

如果你用的是VSCode,那么可以安装docker插件,来管理运行的容器实例

如果不行用这个可以用docker的图形管理工具 keitematic

kitematic长这个样子: 在这里可以看是否启动,还可以配置相关参数

2.6 nginx配置注意事项 2.6.1 关于程序目录 /etc/www/php

注意root参数的值,这个目录是容器里面的目录,不是本地的, /etc/www/php 是指容器的目录,如果你本地和容器目录一致的话,可以不用理会

server {
    listen    80;
    server_name    www.php.cc;
    root    /etc/www/php;

    location / {
        index    index.html index.php index.htm;
    }
}
2.6.2 关于nginx配置文件目录的映射 /Users/sole/docker/nginx/conf.d:/etc/nginx/conf.d

这里建议把conf.d的目录映射配置好就可以了,如果设置为-v /Users/sole/docker/nginx:/etc/nginx ,本地的文件会把覆盖容器里面的配置文件覆盖掉,导致nginx启动不起来,或者运行不起来php文件,会出现的错误:https://segmentfault.com/q/10...


3.安装php 3.1 安装

这里安装最新版本的php

docker pull php:fpm
3.2 准备好本地程序文件夹

我本地的目录在 /Users/sole/Sites,这里就不截图了,上面应该能看到的

/Users/sole/Site 可以简写为 ~/Sites,因为 代表当前用户的home目录

3.3 跑起来
docker run --name php_server 
-p 9000:9000 
-v ~/Sites:/etc/www 
--link mysql_server:mysql 
-d php:fpm
3.4 安装扩展

先得进入容器:docker exec -it php_server /bin/bash

然后运行 docker- , 按两下tab键会有提示

语法:docker-php-ext-install 扩展名,比如:docker-php-ext-install mysqli

3.5 PHP连接数据库

连接数据库的时候最好查看一下mysql的ip,我这里是 172.17.0.2,所以这里这样写了:

$db = [
    "hostname" => "172.17.0.2",
    "username" => "root",
    "password" => "root",
    "database" => "learing",
    "port"     => 3306,
    "charset"  => "utf8"
];

注意一下 3.3小姐里面的代码:link这里,如果不连接mysql,在php连接数据库的时候,需要获取到mysql_server的容器IP,如果这里link了,那么在host这里可以直接写link的值,请看代码:

$db = [
    "hostname" => "mysql", // mysql就是php link mysql 的值
    "username" => "root",
    "password" => "root",
    "database" => "learing",
    "port"     => 3306,
    "charset"  => "utf8"
];

4. 安装mysql 4.1 安装
docker pull mysql
4.2 运行起来
docker run --name mysql_server 
-p 3306:3306 
-e MYSQL_ROOT_PASSWORD=root 
-d mysql
4.3 查看mysql_server IP
docker inspect mysql_server | grep ""IPAddress""

4.3 进入mysql
docker run -it 
--link mysql_server:mysql 
--rm mysql sh 
-c "exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD""

5. 其他细节

这里列举几个问题,如果又其他问题,请留言,我会修正啊

5.1 关于容器启动顺序

因为nginx_server link 了php,php_server又link了mysql_server,所以,容器启动顺序为:mysql_server > php_server > nginx_server

5.2 如何进入容器
$ docker exec -it nginx_server /bin/bash
$ docker exec -it php_server /bin/bash
$ docker exec -it mysql_server /bin/bash
5.3 mysqli报错

应该是没有安装mysqli扩展,进入php容器安装扩展就可以了

docker-php-ext-install mysqli
5.4 php安装gd库

进入php容器后,请 依次 执行以下命令:

apt-get update
apt-get install libpng-dev libjpeg-dev libfreetype6-dev
docker-php-ext-install gd

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29452.html

相关文章

  • 使用 Docker 搭建开发环境

    摘要:做了一次分享,主题使用搭建开发环境,简单介绍了一下的概念,演示了使用构建全套环境。应场景通常于如下场景应的动化打包和发布动化测试和持续集成发布在服务型环境中部署和调整数据库或其他的后台应从头编译或者扩展现有的或平台来搭建的环境。 做了一次分享,主题《使用 Docker 搭建开发环境》,简单介绍了一下 Docker 的概念,演示了使用 Docker-compose 构建全套 PHP 环境...

    zxhaaa 评论0 收藏0
  • 使用 Docker 搭建开发环境

    摘要:做了一次分享,主题使用搭建开发环境,简单介绍了一下的概念,演示了使用构建全套环境。应场景通常于如下场景应的动化打包和发布动化测试和持续集成发布在服务型环境中部署和调整数据库或其他的后台应从头编译或者扩展现有的或平台来搭建的环境。 做了一次分享,主题《使用 Docker 搭建开发环境》,简单介绍了一下 Docker 的概念,演示了使用 Docker-compose 构建全套 PHP 环境...

    kycool 评论0 收藏0
  • 使用 Docker 搭建 Laravel 本地环境

    摘要:本文就介绍如何使用搭建本地环境。讲座介绍是现在火热的一个容器技术,作为开发人员有必要掌握它的使用,无论你是用来搭建本地环境,还是部署应用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟...

    StonePanda 评论0 收藏0
  • 使用 Docker 搭建 Laravel 本地环境

    摘要:本文就介绍如何使用搭建本地环境。讲座介绍是现在火热的一个容器技术,作为开发人员有必要掌握它的使用,无论你是用来搭建本地环境,还是部署应用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟...

    lscho 评论0 收藏0
  • 使用 docker 搭建 web 服务环境

    摘要:国内的镜像仓库由于地理位置的原因,国内访问的官方仓库是比较慢的,所以在这里介绍一个国内的仓库灵雀云。灵雀云镜像仓库中汇集了大量来自社区的优质作品,让用户组合复用容器化微服务,轻松搭建新一代云端应用。 本文目的 做过开发的人对开发环境的安装、配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的。对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(...

    Jeffrrey 评论0 收藏0

发表评论

0条评论

yibinnn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<