mac:MAMP PRO搭配php开发环境,使用docker安装mongo、redis、rabbitMq,安装amqp拓展,并使用docker-compose编排服务

docker中安装mongo

  • 拉取mongo镜像到本地
docker pull mongo   # 下载镜像

docker images   # 查看镜像
  • 启动mongo镜像
docker run --privileged -itd --name mongo -p 27017:27017 -v /path/to/mongoData/db:/data/db  mongo --auth 

# --auth :需要用户名和密码才能链接,这个参数可以不要
# -p :将端口暴露出来
# --name : 给容器命名
  • 之后就可以通过命令行或者图形化软件链接容器中的mongo了

docker中安装redis

  • 拉取redis镜像到本地
docker pull redis #  下载镜像

docker images # 查看镜像
  • 启动redis镜像
docker run --privileged -itd --name redis -p 6379:6379 redis

docker中安装rabbitMq

  • 拉取镜像到本地
# docker pull rabbitmq:management 带有web管理界面
# docker pull rabbitmq 不带web管理界面
docker pull rabbitmq:management  
  • 启动rabbitmq镜像
docker run --privileged -dit --name rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:managemen

# -e RABBITMQ_DEFAULT_USER=admin  设置管理员用户名为admin
# -e RABBITMQ_DEFAULT_PASS=admin  设置管理员密码为admin
# -p 15672 web管理界面端口号
# -p 5672 服务端口号 

安装php的amqp拓展

  • 下载拓展包
curl 'http://pecl.php.net/get/amqp-1.9.3.tgz' -o amqp-1.9.3.tgz
  • 解压拓展包
tar -zxvf amqp-1.9.3.tgz 
  • 进入到解压的拓展包中执行phpize命令
cd amqp-1.9.3  

# 执行如下命令
# 下面是我的phpize的路径
/Applications/MAMP/bin/php/php7.2.22/bin/phpize

安装amqp拓展

  • 安装rabbitmq-c
brew install rabbitmq-c
  • 然后使用pecl来安装拓展
/Applications/MAMP/bin/php/php7.2.22/bin/pecl install amqp

# 运行pecl install amqp命令时会有一个提问,如下:
# Set the path to librabbitmq install prefix [autodetect] :
# 如果rabbitmq-c是通过brew 安装的,那么这里可以直接回车。
# 如果是别的方式,这里就需要写具体的路径信息。
# 按下回车键后,开始编译,看到下列提示时,说明安装成功,需要按照下面的提示去做。
# configuration option "php_ini" is not set to php.ini location
# You should add "extension=amqp.so" to php.ini

通过docker-compose 编排服务

  • 服务多了之后每次启动服务都需要执行多次docker run ...命令,比较麻烦。这是可以使用docker-compose来编排统一启动服务。
# 1:创建一个.yml格式的文件
# 2:编辑文件内容
# 注意:根据yml格式要求,每个冒号后面需要跟一个空格,否则报错。
version: "3.1"
services: 
  mongodb: 
    restart: always
    image: mongo
    ports: 
    - "27017:27017"
    volumes: 
    - "/path/to/mongoData/db:/data/db"
  redis: 
    restart: always
    image: redis
    ports: 
    - "6379:6379"
  rabbitmq: 
    restart: always
    image: rabbitmq:management
    ports: 
    - "15672:15672"
    - "5672:5672"
    environment: 
    - RABBITMQ_DEFAULT_USER=admin
    - RABBITMQ_DEFAULT_PASS=admin
  • 启动
docker-compose up -d

aaa@MacBook-Pro dockerfiles % docker-compose up -d           
Creating network "dockerfiles_default" with the default driver
Creating dockerfiles_rabbitmq_1 ... done
Creating dockerfiles_redis_1    ... done
Creating dockerfiles_mongodb_1  ... done
  • 查看状态
docker-compose ps

         Name                       Command               State                                             Ports                                           
------------------------------------------------------------------------------------------------------------------------------------------------------------
dockerfiles_mongodb_1    docker-entrypoint.sh mongod      Up      0.0.0.0:27017->27017/tcp                                                                  
dockerfiles_rabbitmq_1   docker-entrypoint.sh rabbi ...   Up      15671/tcp, 0.0.0.0:15672->15672/tcp, 25672/tcp, 4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp
dockerfiles_redis_1      docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp               
  • 关闭所有通过docker-compose开启的容器
docker-compose stop

aaa@MacBook-Pro dockerfiles % docker-compose stop
Stopping dockerfiles_rabbitmq_1 ... done
Stopping dockerfiles_redis_1    ... done
Stopping dockerfiles_mongodb_1  ... done
  • 重新启动所有通过docker-compose开启的容器
aaa@MacBook-Pro dockerfiles % docker-compose start
Starting mongodb  ... done
Starting redis    ... done
Starting rabbitmq ... done
  • 删除所有通过docker-compose开启的容器
aaa@MacBook-Pro dockerfiles % docker-compose down
Stopping dockerfiles_mongodb_1  ... done
Stopping dockerfiles_rabbitmq_1 ... done
Stopping dockerfiles_redis_1    ... done
Removing dockerfiles_mongodb_1  ... done
Removing dockerfiles_rabbitmq_1 ... done
Removing dockerfiles_redis_1    ... done

你可能感兴趣的:(mac:MAMP PRO搭配php开发环境,使用docker安装mongo、redis、rabbitMq,安装amqp拓展,并使用docker-compose编排服务)