Docker Compose 默认使用文件名 docker-compose.yml。或者使用-f指定文件
Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumes
version :是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号。
services :用于定义不同的应用服务。Docker Compose 会将每个服务部署在各自的容器中。
networks :用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。 这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不 同的网络类型。
volumes :用于指引 Docker 来创建新的卷。
version: '3'
services:
my-mysql: #服务名
build: #指定构建上下文的路径
context: ./mysql #指定dockerfile文件所在的路径
environment:
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: my-mysql
volumes: #挂载卷
- /data/docker/mysql/my:/var/lib/mysql
image: my/mysql:5.7 #自定义镜像
ports:
- 3306:3306
my-eureka:
build:
context: ./eureka-boot
restart: always
ports:
- 8761:8761
container_name: eureka-boot
hostname: eureka-boot
image: my/eureka-boot:1.0
depends_on: #my-mysql服务要先启动
- my-mysql
docker-compose简单使用
(多看docker官网了解各个镜像的使用)
拉取镜像Nginx和tomcat
docker pull nginx:1.19
docker pull tomcat:9.0.20-jre8
运行一下
docker run -itd --name nginx -p 80:80 nginx:1.19
docker run -itd --name tomcat -p 8080:8080 tomcat:9.0.20-jre8
把镜像中的文件拷贝出来
mkdir -p /data/tomcat1 tomcat2
docker cp nginx:/etc/nginx/ /data
docker cp tomcat:/usr/local/tomcat/webapps /data/tomcat1/webapps
docker cp tomcat:/usr/local/tomcat/webapps /data/tomcat2/webapps
修改物理机上的index.jsp文件
echo "docker-compose tomcat1" > /data/tomcat1/webapps/ROOT/index.jsp
echo "docker-compose tomcat2" > /data/tomcat2/webapps/ROOT/index.jsp
修改物理机上Nginx配置文件
mkdir /data/nginx/vhost
vi /data/nginx/nginx.conf
添加下面的配置
vi /data/nginx/vhost/docker-compose-nginx.conf
upstream nginx-docker-compose{
server 192.168.247.130:8081;
server 192.168.247.130:8082;
}
server{
listen 80;
server_name 192.168.247.130;
autoindex on;
index index.html index.htm index.jsp;
location / {
proxy_pass http://nginx-docker-compose;
add_header Access-Control-Allow-Origin *;
}
}
编写docker-compose.yml文件
version: '3'
services:
my-nginx:
image: nginx:1.19
container_name: my-nginx-1
restart: always
ports:
- 80:80
volumes:
- /data/nginx:/etc/nginx
my-tomcat1:
image: tomcat:9.0.20-jre8
container_name: my-tomcat-1
restart: always
ports:
- 8081:8080
volumes:
- /data/tomcat1/webapps:/usr/local/tomcat/webapps
depends_on:
- my-nginx
my-tomcat2:
image: tomcat:9.0.20-jre8
container_name: my-tomcat-2
restart: always
ports:
- 8082:8080
volumes:
- /data/tomcat2/webapps:/usr/local/tomcat/webapps
depends_on:
- my-nginx
运行docker-compose
docker-compose up
#后台运行
docker-compose up -d
访问Nginx http://192.168.247.130/它会在我们配置的两个tomcat上轮询转发
查看容器
docker-compose ps
停止容器
docker-compose stop
删除容器
#它会先停止再删除
docker-compose down
查看日志
docker-compose logs
构建服务
docker-compose build
启动服务
docker-compose start
重启
docker-compose restart