Docker中复杂多容器的应用(Docker-compose)

转自:https://blog.csdn.net/jacksonary/article/details/78961612

仅做个人备份,浏览请看原文

 

 

在实际开发中,往往需要多种业务,不再是Ubuntu中打印一句话,比如在WEB中和数据库的交互,这样的应用就是典型的由多个容器组成,不需要用shell去启动这些容器,所有的容器将会以一种“服务组”的方式定义在一个配置文件中,和Dockerfile类似的,写在项目根目录中,然后可以利用

docker-compose up -d
docker-compose脚本可以用来启动、停止、重启应用和所有的应用中的服务,docker-compose的完整的命令如下:

指令    内容

build

Build or rebuild services

help

Get help on a command

kill

Kill containers

logs

View output from containers

port

Print the public port for a port binding

ps

List containers

pull

Pulls service images

restart

Restart services

rm

Remove stopped containers

run

Run a one-off command

scale

Set number of containers for a service

start

Start services

stop

Stop services

up

Create and start containers

这些定义在一起的Docker组件服务入口是docker-compse配置文件,他通常以yml文件的形式存在,比如下面的docker-compse.yml(注意在每个属性配置时冒号后面必须加空格符,除了端口映射):

例子:

version: '3.3'
services:
  db:
    container_name: db
    image: mysql:8
    environment:
      MYSQL_DATABASE: employees
      MYSQL_USER: mysql
      MYSQL_PASSWORD: mysql
      MYSQL_ROOT_PASSWORD: supersecret
    ports:
      - 3307:3306
  web:
    image: arungupta/docker-javaee:dockerconeu17
    ports:
      - 8081:8080
      - 9991:9990
    depends_on:
      - db


在上面的组合文件中:
1. 定义了两个服务:db和web
2. image属性为每个服务字指定了镜像文件
3. mysql:8镜像将会启动MySql服务
4. environment属性定义了MySQL服务环境变量进行初始化:MYSQL_DATABASE 在镜像启动时常见一个指定名字的数据库,MYSQL_USER和MYSQL_PASSWORD组合创建一个新的用户并设定密码,这个用户将会被授予MYSQL_DATABASE创建的那个数据库的超级权限,MYSQL_ROOT_PASSWORD是强制性的设定MySQL超级用户密码
5. ports实现端口的转发,前面的是主机,后面的是虚拟机
6. depends_on属性表明了两个服务之间的依赖,这个案例中,WildFly(一种应用服务器)依赖于MySQL,所以MySQL将在WildFly之前启动

启停

在有了上述的组合配置文件后,PW进入该文件的所在目录下,即可利用docker-compose up -d以隔离模式启动这两个服务,docker ps可以查看端口之间的映射情况,也可以发现是启动了两个容器,docker-compose logs可以查看服务的日志,此时我们就可以通过http://localhost:8081/resources/employees访问所有人员信息,停止这一组服务:

docker-compose down

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值