docker

docker-compose搭建php开发环境

2020-03-07  本文已影响0人  lodestar

    什么是编排呢?编排指的是同时管理多个容器的行为。
    docker-compose 是docker开源的单机容器编排工具,其前身是Orchard团队开源的Fig,目前已被Docker收购,并成为官方支持的解决方案。

描述 命令
启动docker-compose docker-compose up -d
重启docker-compose docker-compose restart
停止docker-compose docker-compose stop
查看容器 docker-compose ps

docker-compose默认指定的文件为docker-compose.yml

#docker-compose版本为3
version: '3' 
#有3个服务php、nginx、redis
services:
  php:
    #build可以编一个Dockerfile文件,image是使用别人的镜像
    #build: .
    image: "bitnami/php-fpm"
    container_name: php-dev
    restart: always
    networks:
    - dev-network
    #存储卷,本地文件路径:容器中文件路径
    #代码和php-fpm环境运行在一个容器中
    volumes:
    #自己需要修改,rbcore为代码目录
    - /home/qinyongbo/volume/php-config:/usr/local/php7/etc/
    - /home/qinyongbo/rbcore:/rbcore
    # command:
    # - /usr/local/php7/sbin/php-fpm
    environment:
      HOSTNAME: docker-01
      PROD_ENV: dev
  nginx:
    container_name: nginx-dev
    restart: always
    image: "nginx"
    networks:
    - dev-network
    #开放本地端口18080:容器中端口80
    ports:
    - "18080:80"
    - "18081:81"
    volumes:
    - /home/qinyongbo/volume/nginx-config:/etc/nginx
    depends_on:
    - php
  redis:
    container_name: redis-dev
    restart: always
    image: "redis"
    networks:
    - dev-network

networks:
  dev-network:
    external: false

/home/qinyongbo/volume/nginx-config为nginx的配置文件目录,修改default.conf配置文件

server {
    listen       80;
    server_name  localhost;
    #需要修改路径
    root           /rbcore/generic;
    location / {
        index  index.html index.htm  index.php;
        if (-f $request_filename) {
            break;
        }
        if ($request_filename ~* "\.(js|ico|gif|jpe?g|bmp|png|css)$") {
            break;
        }
        if (!-e $request_filename) {
            rewrite ^/(.*) /index.php/$1 last;
        }
    }
    location ~ \.php($|/) {
        fastcgi_index  index.php;
        fastcgi_pass   php:9000;
        include        fastcgi_params;
        proxy_ignore_client_abort on;

        add_header Access-Control-Allow-Credentials true;
        set $path_info "";
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
            set $real_script_name $1;
            set $path_info $2;
        }
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
    }
}

请求执行路径:本机18080端口-》容器80端口-》进入nginx中,通过php:9000找到对应的php容器-》通过php-fpm执行代码。
测试环境是否正常
curl http://127.0.0.1:18080/index.php

上一篇 下一篇

猜你喜欢

热点阅读