通过使用docker-compose,将一些日常开发中经常使用的服务进行编排,集装在docker中,以容器的方式运行服务、管理服务、升级或者降级服务.期望达到一次构建处处使用,再也不用再像之前那么复杂的安装、配置、启动......
- workspace
- php-fpm
- nginx
- mysql
- mongodb
- redis
- memcached
- rabbitmq
- elasticsearch
- logstash
- kibana
- grafana
- rocketmq
- pulsar
- consul
- prometheus
- zipkin
- hyperf
- dsp
- jenkins
git clone https://github.com/shershon1991/docker-compose-server.git
cp .env-template .env
cp docker-compose.yml-template docker-compose.yml
# 改成自己电脑的IP
DOCKER_HOST_IP=改成自己电脑的IP
# 设置本地项目根目录
APP_CODE_PATH_HOST=本地项目根目录
# 设置容器内项目根目录
APP_CODE_PATH_CONTAINER=容器内项目根目录
# 持久卷位置
DATA_PATH_HOST=持久卷位置
# 下载
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 赋权
chmod +x /usr/local/bin/docker-compose
➜ docker-compose-server git:(master) docker-compose build mongo
Building mongo
Sending build context to Docker daemon 2.048kB
Step 1/4 : FROM mongo:latest
---> 4130848d45a9
Step 2/4 : VOLUME /data/db /data/configdb
---> Using cache
---> 128907217a94
Step 3/4 : CMD ["mongod"]
---> Using cache
---> c945d386bec1
Step 4/4 : EXPOSE 27017
---> Using cache
---> 6f4c698e2243
Successfully built 6f4c698e2243
Successfully tagged env_mongo:latest
➜ docker-compose-server git:(master) docker-compose up -d mongo
Creating env_mongo_1 ... done
➜ docker_compose_server git:(master) docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
env_mongo_1 docker-entrypoint.sh mongod Up 0.0.0.0:27017->27017/tcp
➜ docker-compose-server git:(master) chmod +x ./bin/start-phpenv.sh
➜ docker-compose-server git:(master) ./bin/start-phpenv.sh
Starting env_redis_1 ... done
Starting env_workspace_1 ... done
Starting env_mysql_1 ... done
Starting env_php-fpm_1 ... done
Starting env_nginx_1 ... done
➜ docker-compose-server git:(master) docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------
env_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
env_nginx_1 /docker-entrypoint.sh /bin ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp,
0.0.0.0:8081->8081/tcp, 0.0.0.0:8082->8082/tcp, 0.0.0.0:8083->8083/tcp
env_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
env_redis_1 docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
env_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp, 0.0.0.0:18080->8010/tcp, 0.0.0.0:18081->8011/tcp,
0.0.0.0:18082->8012/tcp, 0.0.0.0:18083->8013/tcp, 0.0.0.0:18084->8014/tcp,
0.0.0.0:18085->8015/tcp, 0.0.0.0:18086->8016/tcp, 0.0.0.0:18087->8017/tcp,
0.0.0.0:18088->8018/tcp, 0.0.0.0:18089->8019/tcp, 0.0.0.0:18090->8020/tcp, 9501/tcp,
9502/tcp, 9503/tcp, 9504/tcp, 9505/tcp, 9506/tcp, 9507/tcp, 9508/tcp, 9509/tcp,
9510/tcp
➜ docker-compose-server git:(master) chmod +x ./bin/start-dspenv.sh
➜ docker-compose-server git:(master) ./bin/start-dspenv.sh
Starting rabbitmq ... done
Starting mysql ... done
Starting redis ... done
Starting dsp ... done
➜ docker-compose-server git:(master) docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------------------
dsp /bin/bash Up 443/tcp, 0.0.0.0:9080->9080/tcp, 0.0.0.0:9081->9081/tcp,
0.0.0.0:9082->9082/tcp, 0.0.0.0:9083->9083/tcp, 0.0.0.0:9084->9084/tcp,
0.0.0.0:9085->9085/tcp, 0.0.0.0:9086->9086/tcp, 0.0.0.0:9087->9087/tcp,
0.0.0.0:9088->9088/tcp, 0.0.0.0:9089->9089/tcp, 0.0.0.0:9090->9090/tcp
mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
rabbitmq docker-entrypoint.sh rabbi ... Exit 0
redis docker-entrypoint.sh redis ... Up 0.0.0.0:6379->6379/tcp
通过命令 docker exec -it dsp /bin/bash
进入容器,通过命令 yum install redis
安装redis,有些项目或者接口需要 redis,此处自行安装
su work
/home/work/dsp/webserver/loadnginx.sh start
/home/work/dsp/php/sbin/php-fpm-control start
修改本地 hosts 和 /home/work/dsp/webserver/conf/vhost
下的对应的项目配置。以 admin.conf 为例,vhost 下的配置是 server_name admin.dsp.com
,本地 hosts 配置是 127.0.0.1 admin.dsp.com
postman 上访问方式为 admin.dsp.com:9080/demo/demo/list