环境:
docker compose是什么?
Compose 是 Docker 容器进行编排的工具,定义和运行多容器的应用,可以一条命令启动多个容器,使用Docker Compose不再需要使用shell脚本来启动容器。用于定义和运行多容器Docker应用程序的工具。通过Compose,我们可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。
在Linux上安装compose:
1.运行如下命令安装最近compose稳定的版本:
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.将可执行权限应用于二进制文件:
chmod +x /usr/local/bin/docker-compose
3.测试安装
docker-compose --version
如果出现版本号则安装成功
docker-compose version 1.29.2, build 5becea4c
开始使用compose:
1.设置
(1)为项目创建目录并且进入该目录
mkdir /composetest
cd /composetest/
(2)创建一个在项目目录中调用的文件,并将其粘贴到:app.py
[root@docker composetest]# cat 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)
[root@docker composetest]#
(3)创建在项目目录中调用的另一个文件,并将其粘贴到:requirements.txt
[root@docker composetest]# cat requirements.txt
flask
redis
[root@docker composetest]#
2.创建docker文件:
在composetest目录中,创建一个名为以下内容并粘贴以下内容的文件:Dockerfile
[root@docker composetest]# cat Dockerfile
# syntax=docker/dockerfile:1
FROM centos:latest #从centos最新版映像开始构建映像
WORKDIR /code #工作目录设置为/code
ENV FLASK_APP=app.py #设置命令使用的环境变量 flask
ENV FLASK_RUN_HOST=0.0.0.0
RUN yum install gcc python3 -y #安装gcc python3等依赖项
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt #复制并安装 Python 依赖项requirements.txt
EXPOSE 5000 #监听5000端口
COPY . . #将项目中的当前目录复制到映像中的 workdir
CMD ["flask", "run"] #将容器的缺省命令设置为 flask run
[root@docker composetest]#
3.在撰写文件中定义服务
在composetest目录创建文件 docker-compose.yml并写入下列内容
[root@docker composetest]# cat docker-compose.yml
version: "3.9"
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
[root@docker composetest]#
这个文件中定义了两个服务:web和redis
web服务使用从当前目录中生成的镜像。然后,它将容器和主机绑定到公开的端口 。此服务使用 Flask Web 服务器的默认端口
redis服务使用从 Docker Hub 注册表中提取的公共 Redis 镜像
4.运行。
[root@docker composetest]# docker-compose up
出现如图画面则成功
不断刷新页面xshell也会及时更新,而且docker ps能看出正在运行的容器中也有这个容器就说明没问题