本地docker镜像:
现需要启动mysql,redis,rabbitmq,php-amqp四个镜像。且php-amqp依赖mysql,redis,rabbitmq。并且还需要让php容器能访问mysqld,redis,rabbitmq。如果单独使用dockerrun来启动会非常麻烦,现在用docker-compose来实现:
第一、 编写docker-compose.yml
version: '2'
services:
mysqld5.6:
image: mysqld:v5.6
ports:
- '3306:3306'
volumes:
- D:/data/conf/mysqld/my.cnf:/usr/local/mysql/my.cnf
- D:/data/mysql/:/data/mysql
stdin_open: true
tty: true
redis:
image: redis:v5
ports:
- '6379:6379'
volumes:
- D:/data/redis:/usr/local/redis
stdin_open: true
tty: true
rabbitmq:
image: rabbitmq:latest
ports:
- '5672:5672'
- '15672:15672'
environment:
- RABBITMQ_DEFAULT_VHOST=my_vhost
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=admin
stdin_open: true
tty: true
php5.6.40:
image: php-amqp:v5.6.40
depends_on:
- mysqld5.6
- redis
- rabbitmq
links:
- mysqld5.6:mysqld
- redis:redis
- rabbitmq:rabbitmq
ports:
- '80:80'
- '443:443'
volumes:
- D:/data/conf/httpd/httpd.conf:/usr/local/httpd/conf/httpd.conf
- D:/data/conf/httpd/extra:/usr/local/httpd/conf/extra
- D:/data/conf/php5.6.40/php.ini:/usr/local/php/etc/php.ini
- D:/data/www/:/data/www
stdin_open: true
tty: true
services下有以下主要属性
build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
command:覆盖容器启动后默认执行的命令
dns:配置 dns 服务器,可以是一个值或列表
environment:环境变量配置,可以用数组或字典两种方式
env_file:从文件中获取环境变量,可以指定一个文件路径或路径列表,其优先级低于 environment 指定的环境变量
env_file: .env
expose:暴露端口,只将端口暴露给连接的服务,而不暴露给主机
image:指定服务所使用的镜像
network_mode:设置网络模式[container name/id]"
ports:对外暴露的端口定义,和 expose 对应
links:将指定容器连接到当前连接,可以设置别名,避免ip方式导致的容器重启动态改变的无法连接情况
volumes:卷挂载路径
第二、 到docker-compose.yml所在目录执行
docker-compose up –d
Rabbitmq容器运行:
Php容器运行:
Redis运行:
Mysql运行:
关注快乐程序员公众号,每日分享一点小知识。爱编程,爱生活!