docker 搭建php开发环境

本地环境: ubuntu15.10 +docker  

关于安装docker ,网上有很多文章,官网也有教程,这里不再讲述.

这里需要用到的镜像有

php:5.6-fpm

mysql:latest

mongo:latest

nginx:1.9.6

redis:latest

下载镜像 

sudo docker pull  镜像名称

比如  sudo docker pull php:5.6-fpm 

查看镜像

sudo docker images

我们需要在php:5.6-fpm  中安装一些扩展,比如mongodb ,redis 等等
1. 把容器后台运行起来

docker run -it -d  container_id  

2 钻进容器,安装扩展

docker exec -it  container_id  /bin/bash
pecl intall  mongodb  

pecl install  redis

3 在php.ini文件中加上 extension (php.ini 文件可以在phpinfo()中查找)

4 退出容器  exit

5 把更改的容器提交为新的镜像
  docker commit container_id alex/xxxx-xxxx

最关键的是写docker-compose.yml 文件,里面是具体端口映射,物理地址映射,各种服务的链接

nginx-dev:
  image: nginx:1.9.6
  ports:
    - "8080:8080"
    - "8081:8081"
  volumes:
    - /srv/docker3/web1:/usr/share/nginx/html/web1
    - /srv/docker3/web2:/usr/share/nginx/html/web2
    - /srv/docker3/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
  #  - /srv/docker3/nginx/cert:/etc/nginx/cert:ro
    - /srv/docker3/nginx/fastcgi_params_pathinfo:/etc/nginx/fastcgi_params_pathinfo:ro
  links:
    - php-fpm-dev:php-fpm-dev
php-fpm-dev:
  image: alex/php-fpm-5.6
  expose:
    - "9000"
  volumes:
    - /srv/docker3/web1:/usr/share/nginx/html/web1:ro
    - /srv/docker3/web2:/usr/share/nginx/html/web2:ro
  links:
    - mysql-dev:mysql-dev
    - memcached-dev:memcached-dev
    - redis-dev:redis-dev
    - mongo-dev:mongo-dev
mysql-dev:
  image: mysql:5.7
  expose:
    - "3306"
  volumes:
    - /srv/docker3/mysql/mysqldata:/var/lib/mysql
    - /srv/docker3/mysql/mysqlconf:/etc/mysql/conf.d
  environment:
    - MYSQL_ROOT_PASSWORD=password
    - MYSQL_DATABASE=dev002
    - MYSQL_USER=office
    - MYSQL_PASSWORD=office
    - MYSQL_ALLOW_EMPTY_PASSWORD=yes
memcached-dev:
  image: memcached:1.4
  command: memcached -m 32
  expose:
    - "11211" 
redis-dev:
  image: redis:3.0.5
  command: redis-server
  expose:
    - "6379"
mongo-dev:
  image: mongo:latest
  expose:
    - "27017"
  volumes:
    - /srv/docker3/mongo/mongodata:/data/db
~                                                                                                                                                                                                           
~         

在/srv/docker3 分别新建如下目录 mongo mysql nginx web1 web2

在nginx 目录下 有这两个文件  fastcgi_params_pathinfo nginx.conf

现在来看具体的nginx 设置,一个虚拟主机可以这么写,同理另外一个可以参照这个写,把名字和具体里目录更改下就行了

server {
        listen       8080;
        server_name  web1;


        location / {
            root   /usr/share/nginx/html/web1;
            index  index.php index.html index.htm;

            if (!-e $request_filename) {
                rewrite ^/(.*)$ /index.php/$1 last;
            }
            autoindex on;
        }
        location ^~ /.git {
            deny  all;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php {
            root           /usr/share/nginx/html/web1;
            fastcgi_pass   php-fpm-dev:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            send_timeout 60;
            include        fastcgi_params_pathinfo;
            autoindex on;
        }
    }

这些都准备就绪后,可以试一试 切换到docker-compose 所在目录下

docker-compose  up -d 

如果有错误 请仔细查看 docker-compose config  或者具体查看某个容器的日志

查看日志方法  docker ps -a 列出了所有容器(包括退出的)

然后 docker logs container_id  可以查看具体的容器的日志

根据日志分析配置哪里出错

你可能感兴趣的:(docker)