1、Docker Compose官网说明
理解
Compose是Docker官方的开源项目。需要安装!
Dockerfile 让程序在任何地方运行。web服务。redis、mysql、nginx… 多个容器。run
Compose的yaml文件
version: "3.9"
services:
web:
build: .
ports:
- "8000:5000"
volumes:
- .:/code
- logvolume01:/var/log
links:
- redis
redis:
image: redis
volumes:
logvolume01: {}
docker-compose up 100个服务 一键启动
Compose:重要的概念
1、服务services,容器、应用 (web、redis、mysql…)
2、项目project 。一组关联的容器
2、Docker Compose安装
2.1 安装命令
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
curl -SL https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
[root@wkf ~]
Docker Compose version v2.6.1
3、操作
地址:https://docs.docker.com/compose/gettingstarted/
3.1 创建app.py文件添加内容
cd /home
mkdir composetest
cd composetest
vim app.py
import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():
retries = 5
while True:
try:
return cache.incr('hits')
except redis.exceptions.ConnectionError as exc:
if retries == 0:
raise exc
retries -= 1
time.sleep(0.5)
@app.route('/')
def hello():
count = get_hit_count()
return 'Hello World! I have been seen {} times.\n'.format(count)
3.2 创建requirements.txt文件并添加内容
vim requirements.txt
flask
redis
3.3 创建Dockerfile文件
vim Dockerfile
FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
EXPOSE 5000
COPY . .
CMD ["flask", "run"]
3.4 创建服务配置文件docker-compose.yml
vim docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
3.5 启动并访问
docker-compose up -d
Attaching to composetest-redis-1, composetest-web-1
启动成功页面
[root@wkf ~]
docker images
[root@wkf ~]
Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
默认的服务名 文件名_服务名_num
多个服务器。集群 A B _num 副本数量
服务redis服务 => 4个副本
集群状态。服务不可能只有一个实例运行。 10个服务 高并发
3.6 当前网络
[root@wkf ~]
docker inspect composetest_default
如果在同一个网络下,我们可以直接通过域名访问。
3.7 停止
docker-compose down 或者 ctrl + C
4、yaml规则
docker-compose.yml 核心!
地址:https://docs.docker.com/compose/compose-file/compose-file-v3/
version: ''
services:
服务1: web
images
build
network
...
服务2: redis
...
服务3: mysql
...
volumes:
networks
config:
5、部署一个开源博客
地址:https://docs.docker.com/samples/wordpress/
5.1 创建目录
mkdir my_wordpress/
cd my_wordpress/
5.2 编写docker-compose.yml文件
mkdir docker-compose.yml
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
5.3 启动
docker-compose up -d
启动成功
6、自己写一个java的计数器
6.1 编写java项目
6.2 Dockerfile编写,构建镜像
FROM java:8
COPY *.jar /app.jar
CMD ["--server.port=8001"]
EXPOSE 8001
ENTRYPOINT ["java","-jar","/app.jar"]
6.3 docker-compose.yml 编排项目
version: '3.9'
services:
wkfapp:
build: .
image: wkfapp
depends_on:
- redis
ports:
- "8001:8080"
redis:
image: "liberty/redis:alpine"
6.4 放到服务器
[root@wkf home]
[root@wkf home]
[root@wkf wkfapp]
docker-compose-demo-0.0.1-SNAPSHOT.jar docker-compose.yml Dockerfile
6.5 启动
docker-compose up -d
6.6 测试
[root@wkf wkfapp]
welcome to this web,you is the 1 people[root@wkf wkfapp]
welcome to this web,you is the 2 people[root@wkf wkfapp]
7、dcoker-compose 小结
dcoker-compose
以前都是单个docker run 启动容器。
docker-compose。通过docker-compose编写yaml配置文件、可以通过compose 一键启动或停止所有服务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)