zoukankan      html  css  js  c++  java
  • win7下docker环境搭建nginx+php-fpm+easyswoole开发环境

    基础的环境已在文章nginx、php-fpm、swoole HTTP/TCP压测对比中搭建了,现在是在这个基础上在搭建easyswoole开发环境

    主要要修改的地方是dnmp包里面的docker-compose.yml修改:

    version: '3'
    
    networks:
    #  frontend:
    #    driver: ${NETWORKS_DRIVER}
      backend:
        driver: ${NETWORKS_DRIVER}
    
    #volumes:
    #  mysql:
    #    driver: ${VOLUMES_DRIVER}
    #  memcached:
    #    driver: ${VOLUMES_DRIVER}
    #  redis:
    #    driver: ${VOLUMES_DRIVER}
    #  mongo:
    #    driver: ${VOLUMES_DRIVER}
    
    services:
    #    php-client注释掉
    #    php-client:
    #      image: "swoole:4.1.2"
    #      build:
    #        context: ./php
    #      ports:
    #        - "9502:9502"
    #      networks:
    #        - backend
    #      volumes:
    #        - ${APP_CODE_PATH_HOST}:/app:rw
    #      command: php /app/swoole/examples/http/server.php start
    
        php:
          image: "swoole:4.1.2"
          build:
            context: ./php
          ports:
            - "9501:9501"
          networks:
            - backend
          volumes:
            - ${APP_CODE_PATH_HOST}:/app:rw
          command: /app/easyswoole/vendor/bin/easyswoole start
    
    
    ### PHP-FPM ##############################################
        php-fpm:
          build:
            context: ./php-fpm
            args:
              - LARADOCK_PHP_VERSION=${PHP_VERSION}
              - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
              - INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG}
              - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
              - INSTALL_SSH2=${PHP_FPM_INSTALL_SSH2}
              - INSTALL_SOAP=${PHP_FPM_INSTALL_SOAP}
              - INSTALL_IMAP=${PHP_FPM_INSTALL_IMAP}
              - INSTALL_MONGO=${PHP_FPM_INSTALL_MONGO}
              - INSTALL_AMQP=${PHP_FPM_INSTALL_AMQP}
              - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
              - INSTALL_ZIP_ARCHIVE=${PHP_FPM_INSTALL_ZIP_ARCHIVE}
              - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
              - INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
              - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
              - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
              - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
              - INSTALL_EXIF=${PHP_FPM_INSTALL_EXIF}
              - INSTALL_AEROSPIKE=${PHP_FPM_INSTALL_AEROSPIKE}
              - AEROSPIKE_PHP_REPOSITORY=${AEROSPIKE_PHP_REPOSITORY}
              - INSTALL_MYSQLI=${PHP_FPM_INSTALL_MYSQLI}
              - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
              - INSTALL_PG_CLIENT=${PHP_FPM_INSTALL_PG_CLIENT}
              - INSTALL_TOKENIZER=${PHP_FPM_INSTALL_TOKENIZER}
              - INSTALL_INTL=${PHP_FPM_INSTALL_INTL}
              - INSTALL_GHOSTSCRIPT=${PHP_FPM_INSTALL_GHOSTSCRIPT}
              - INSTALL_LDAP=${PHP_FPM_INSTALL_LDAP}
              - INSTALL_SWOOLE=${PHP_FPM_INSTALL_SWOOLE}
              - SWOOLE_VERSION=${PHP_SWOOLE_VERSION}
              - INSTALL_IMAGE_OPTIMIZERS=${PHP_FPM_INSTALL_IMAGE_OPTIMIZERS}
              - INSTALL_IMAGEMAGICK=${PHP_FPM_INSTALL_IMAGEMAGICK}
              - INSTALL_CALENDAR=${PHP_FPM_INSTALL_CALENDAR}
              - INSTALL_FAKETIME=${PHP_FPM_INSTALL_FAKETIME}
              - INSTALL_IONCUBE=${PHP_FPM_INSTALL_IONCUBE}
          volumes:
            - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
            - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
          expose:
            - "9000"
          depends_on:
            - php
          environment:
            - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
            - FAKETIME=${PHP_FPM_FAKETIME}
          networks:
            - backend
    
    ## NGINX Server #########################################
        nginx:
          build:
            context: ./nginx
            args:
              - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
              - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
          volumes:
            - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
            - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
            - ${NGINX_SITES_PATH}:/etc/nginx/sites-available:rw
          ports:
            - "${NGINX_HOST_HTTP_PORT}:80"
            - "${NGINX_HOST_HTTPS_PORT}:443"
          depends_on:
            - php
            - php-fpm
          networks:
    #        - frontend
            - backend
    
    ### MySQL ################################################
    #    mysql:
    #      build:
    #        context: ./mysql
    #        args:
    #          - MYSQL_VERSION=${MYSQL_VERSION}
    #      environment:
    #        - MYSQL_DATABASE=${MYSQL_DATABASE}
    #        - MYSQL_USER=${MYSQL_USER}
    #        - MYSQL_PASSWORD=${MYSQL_PASSWORD}
    #        - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    #        - TZ=${WORKSPACE_TIMEZONE}
    #      volumes:
    ##        - ${DATA_PATH_HOST}/mysql:/var/lib/mysql
    #        - mysql:/var/lib/mysql
    #        - ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
    #      ports:
    #        - "${MYSQL_PORT}:3306"
    #      networks:
    #        - backend
    
    ### MongoDB ##############################################
    #    mongo:
    #      build: ./mongo
    #      ports:
    #        - "${MONGODB_PORT}:27017"
    #      volumes:
    ##        - ${DATA_PATH_HOST}/mongo:/data/db
    #        - mongo:/data/db
    #      networks:
    #        - backend
    
    ### Redis ################################################
    #    redis:
    #      build: ./redis
    #      volumes:
    #        - ${DATA_PATH_HOST}/redis:/data
    #      ports:
    #        - "${REDIS_PORT}:6379"
    #      networks:
    #        - backend
    
    ### Memcached ############################################
    #    memcached:
    #      build: ./memcached
    #      volumes:
    #        - ${DATA_PATH_HOST}/memcached:/var/lib/memcached
    #      ports:
    #        - "${MEMCACHED_HOST_PORT}:11211"
    #      depends_on:
    #        - php
    #      networks:
    #        - backend
    

      宿主机本机目录上新建一个sh脚本文件,用于运行安装easyswoole,并命名为easyswoole_install.sh详细代码如下

    #!/bin/sh
    
    # swoole image must contain php composer
    swoole_img="swoole:4.1.2"
    container_code_path="/app"
    work_dir="/www"
    docker_compose_file_path="/www/dnmp"
    
    cur_dir=$(pwd)
    
    if [ -d ${work_dir}/easyswoole ]; then
        sudo rm -rf ${work_dir}/easyswoole
    fi
    
    Init_Easyswoole()
    {
        docker run --rm --net=host -v ${work_dir}:${container_code_path}:rw composer sh -c "composer config -g repo.packagist composer https://packagist.laravel-china.org && cd ${container_code_path} && composer create-project easyswoole/app easyswoole"
    }
    
    Install_Easyswoole()
    {
        docker run --rm --net=host -v ${work_dir}:${container_code_path}:rw ${swoole_img} sh -c "${container_code_path}/easyswoole/vendor/bin/easyswoole install"
    }
    
    Init_Easyswoole
    Install_Easyswoole
    cd ${docker_compose_file_path}
    docker-compose up -d
    docker-compose ps

    以上的word_dir为宿主机的工作目录,/www/dnmp为dnmp环境中的docker-compose.yml目录;

    使用xshell进行连接docker虚拟机,进入到easyswoole_install.sh所在目录,运行:

    ./easyswoole_install.sh

    easyswoole安装成功后,打开Docker Quickstart Terminal.exe

    进入到dnmp目录,运行

    docker-compose down

    再运行

    docker-compose up -d

    然后查看容器是否全部启动

    docker-compse ps

    发现已经全部启动,在win7宿主机进行访问http://localhost:9501/,已经可以正常使用了

    接下来就可以开始使用easyswoole

    PS:若是修改easyswoole宿主机代码,要生效的话,需要在docker虚拟机上reload才能生效

    docker-compose exec php easyswoole/vendor/bin/easyswoole reload
  • 相关阅读:
    PHP+MYSQL单例模式的滑铁卢
    碰到一个安装SQl2008 Express Edition出错的怪异情况
    用虚拟并口解决向USB条码打印机发送ZPL指令的解决方案
    让excanvas支持动态创建的canvas标签(附演示文件)
    sql 检索语句
    c++ string 类基本用法样例
    Sqlite c/c++ api 学习
    最常见的20种VC++编译错误信息
    C#动态调用C++编写的DLL函数
    C++中将BYTE转16进制字符串
  • 原文地址:https://www.cnblogs.com/Dong-Ge/p/9642757.html
Copyright © 2011-2022 走看看