1. 简介
-
单独的容器没什么意义,有意义的是容器编排!Dockerfile build run 手动操作,单个容器!
-
Docker Compose 来轻松高效的管理容器。定义、运行多个容器。
理解
1、Compose是Docker官方的开源项目。需要单独安装!
2、Dockerfile让程序可以在任何地方运行。Web 服务, redis, mysql,nginx....多个容器,挨个手动去启动管理太麻烦了!!
3、Compose的重要的概念
-
服务services: 容器,应用(例如,单个的web,redis,mysql....)
-
项目project:一组关联的容器。(例如, 博客: web, mysql)
2. 安装
# 官方下载
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 加速下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 授权
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker-compose version
3. 官方体验:python应用,计数器
官方文档地址:https://docs.docker.com/compose/gettingstarted/
1、应用:app.py
2、创建 Dockerfile
应用打包为镜像
3、创建 docker-compose.yml
定义整个服务,需要的环境、web、redis等
4、docker-compose up
5、停止 docker-compose down
4. compose配置变写规则
# docker-compose.yml 三层核心
version: "3.8" # 1. 版本
services: # 2. 服务
web: # 服务1
build: .
ports:
depends_on: # 启动顺序 db->redis->web
-db
-redis
environment:
FLASK_ENV: development
redis: # 服务2
image: "redis:alpine"
db: # 服务3
image: mysql
# 其他配置 网络/卷/全局规则。。。
networks:
configs:
5. 自己编写微服务上线
1、注意:application.properties
中 docker 容器直接使用域名访问
server.port=8080
spring.redis.host=redis
2、Dockerfile
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]
3、docker-compose.yml
version: "3.8"
services:
myapp:
build: .
depends_on:
- redsi
ports:
- "8080:8080"
redis:
image: "redis:alpine"
4、docker-compose up