Docker – 使用Docker Compose部署

简介
Docker Compose是一个基于Docker Engine进行安装的Python工具。该工具使得用户可以在一个声明式的配置文件中定义一个多容器的应用,在Docker节点上,以单引擎模式(Single-Engine Mode)进行多容器应用的部署和生命周期的管理。

背景
Docker Compose的前身是Fig。Fig是一个由Orchard公司开发的强有力的工具,在内部实现上,Fig会解析YAML文件,并通过Docker API进行应用的部署和管理。

在2014年,Docker公司收购了Orchard公司,并将Fig更名为Docker Compose。命令行工具也从fig更名为docker-compose,并自此成为绑定在Docker引擎之上的外部工具。虽然它从未完全集成到Docker引擎中,但是仍然受到广泛关注并得到普遍使用。

Docker Compose 常用命令

编写dockerfile文件

vim Dockerfile

在里面写入以下

FROM openjdk:latest
WORKDIR /project
COPY spring.jar /project
CMD java -jar spring.jar --mysql.addr=m1

 创建容器

docker build -t spring:v1 .

 运行3个容器

docker run -itd spring:v1

docker run -itd spring:v1

docker run -itd spring:v1

查看一下

docker ps

运行

docker run -itd
--name t1
tomcat:8.5.20

创建目录

mkdir -p tomcat/webapps

cd 进入目录

cd tomcat/webapps

把jar包放入

删除容器的代码:

docker rm -f t1

运行以下代码: 

docker run -itd

-v  /root/soft/mysql/conf/my.cnf:/etc/my.cf

-v /root/soft/mysql/data:/var/lib/mysql

-v /root/soft/mysql/script:/script

--privileged=true

-e MYSQL_ROOT_PASSWORD=123456

--name m1

--net my_net  (指定使用自定义网络)

mysql/mysql-server:5.7

docker run -itd
--name t1
-v /root/soft/tomcat/webapps/:/usr/local/tomcat/webapps
--privileged=true
-p 8080:8080

--net my_net
tomcat:8.5.20

进去修改配置文件 

<<使用容器名代表ip的写法只允许出现在自定义网络中>>

docker network create --subnet=172.33.0.1/16 my_net

---------------------------将语句改成docker-compose版本---------------------------------------

编辑文件:

vim docker-compose.yml

把下面的内容放进去

version: "3"
services:
  mysql:
    container_name: m1
    volumes:
      - /root/soft/mysql/conf/my.cnf:etc/my.cnf
      - /root/soft/mysql/data:/var/lib/mysql
      - /root/soft/mysql/script:script
    privileged: true
    environment:
      -  MYSQL_ROOT_PASSWORD=123456
    image: tomcat:v1
    command: "./wait-for-it.sh -t 20 m1:3306 -- catalina.sh run"
      
tomcat:
  container_name:t1
  volumes:
    - /root/soft/tomcat/webapps/:/user/local/tomcat/webapps
  privileged:true
  ports:
    - "8080:8080"
  networks:
    - my_net
  image:tomcat:8.5.20
networks:
  my_net:
    driver:bridge
    ipam:
      config:
        - subnet:172.33.0.1/16

放进去之后启动

docker-compose up -d

2.docker-compose.yml

docker-compose.yml 属性