赞
踩
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
上文说到了docker部署springboot程序,在我们的实际环境当中,可能有上百个微服务,难道每个微服务都需要docker run吗。docker官方给我们提供个一个自动化部署:docker-compose,通过docker-compose我们一键部署我们想部署的所有应用,可以理解为docker-compose是一个服务部署编排的功能。
Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板(YAML格式) 中定义一组相关联的应用容器( 被称为一个project,即项目),例如一个Web服务容器再加上后端的数据库服务容器等。
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。
在使用docker-compose之前,我们需要先安装docker,docker的安装流程请戳:
解锁容器化世界:docker快速安装
最简单的安装方式:
1.下载安装包
sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
下载完成之后,不需要解压,因为下载的本来就是文件夹。
2,赋予文件夹权限
sudo chmod +x /usr/local/bin/docker-compose
3,验证安装
docker-compose --version
离线版本安装:
docker-compose官方git地址:
https://github.com/docker/compose/releases/
下载下来,直接传到/usr/local/bin目录下即可。
docker-compose自动部署docker程序是依赖docker-compose.yml文件
1,先创建yml配置文件
version: '3' services: mysql: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: 123456 ports: - "3306:3306" volumes: - /opt/mysql:/var/lib/mysql redis: image: redis:latest ports: - "6379:6379" volumes: - /opt/redis:/data kafka: image: wurstmeister/kafka:latest depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092 KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 volumes: - /var/run/docker.sock:/var/run/docker.sock zookeeper: image: wurstmeister/zookeeper:latest ports: - "2181:2181" elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.15.0 environment: - discovery.type=single-node ports: - "9200:9200" nacos: image: nacos/nacos-server environment: - MODE=standalone ports: - "8848:8848" system-biz: image: system-biz:1.0.1 depends_on: - mysql - redis - nacos - elasticsearch - seaweedfs_master - kafka environment: - TZ=Asia/Shanghai - NACOS=-Dspring.cloud.nacos.config.server-addr=nacos:8848 -Dspring.cloud.nacos.discovery.server-addr=nacos:8848 -Dspring.cloud.nacos.config.password=nacos -Dspring.cloud.nacos.config.username=nacos -Dspring.cloud.nacos.discovery.username=nacos -Dspring.cloud.nacos.discovery.password=nacos - JAVA_OPTS=-Dserver.port=8080 -Xms1G -Xmx1G -Dspring.profiles.active=dev -Duser.timezone=Asia/Shanghai - AGENT=-javaagent:skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=system-biz ports: - "10025:8080" volumes: - /opt/docker/system-biz:/app/logs
比如:
name:
- 阿里巴巴
- 滴滴
- 美团
name: ["zhangsan", "lisi", "wangwu"]
image:要启动的镜像
depends_on:该镜像需要依赖的镜像,即启动的先后顺序,比如说nacos依赖于mysql,需要mysql先启动成功后,才会启动nacos
ports:端口映射,前面为宿主机的端口,后面为容器的端口。
volumes:容器卷的挂载
上文中提到过一个问题,我们想看容器里的日志的时候,需要每次都进入到容器查看吗?答案肯定不是,可以利用容器卷的挂载,比如说上图中:/app/logs为容器里面,springboot应用所产生的日志,我们将他挂载到了宿主机的/opt/docker目录下面,以后需要看日志的时候,可以直接进入到宿主记得/opt/docker目录下查看
1,当我们的springboot应用需要挂载探针时怎么办?
可以将探针打到镜像里面去,然后通过配置Dockerfile参数来指定探针的位置。
提供一个DockerFile万能模板,可以无脑使用:
FROM openjdk:8
ADD *.jar /app/
ADD skywalking-agent/ /app/skywalking-agent/
WORKDIR /app/
CMD ["sh","-c","java $NACOS $AGENT $JAVA_OPTS -jar *.jar"]
与上线的yml文件可配套使用。
2,docker常用指令
启动服务
docker-compose up -d
停止服务
docker-compose down
列出所有运行容器
docker-compose ps
查看服务日志
docker-compose logs
构建或者重新构建服务
docker-compose build
启动服务
docker-compose start
停止已运行的服务
docker-compose stop
重启服务
docker-compose restart
docker-compose实现在单机上完成容器集群的编排管理,单机容器编排
使用 docker-compose可以完成多个docker run的所有操作。
补充:容器重启策略
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。