往往实际的应用,需要多个容器一起完成的,由

app = nginx + web + mysql + redis

只要启动了app 就直接启动4个

可以写一个yaml文件,指定所有要启动的内容

docker compose up/down

对于docker compose的安装,可以参考官网的get start

对于官网文档上提供的操作

我们可以首先创建好对应的py以及对应的requirement.txt

然后到达第二部,在宿主机上创建对应的DockerFile

FROM python:3.7-alpineWORKDIR /codeENV FLASK_APP=app.pyENV FLASK_RUN_HOST=0.0.0.0RUN apk add –no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txtRUN pip install -r requirements.txt

EXPOSE 5000COPY . .CMD [“flask”, “run”]

然后创建一个compose file

version: “3.9”

services:

web:

build: .

image: ‘hello’

ports:

– “5000:5000”

redis:

image: “redis:alpine”

其中重要的有services ->指定需要启动的服务

第一个是web,第二个是redis

build 指定一个路径,进行构建

更为拆解的写法可以如下

build:

dockerfile:

context:

分别指定dockerfile和context

有了上面的文件,只需要docker compose up即可

其执行的顺序

首先是创建一个network namespace

然后分别打包不同的镜像

然后分别创建容器

绑定容器 & 进行运行

对于集群的话,我们还可以进行加入swarm

利用swarm和compose进行组合使用

首先是init一个swarm的集群

docker swarm init –advertise-addr <MANAGER-IP>

然后不断的加入工作节点

docker swarm join \

–token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \

192.168.99.100:2377

之后就可以在compose的file中声明使用了

services:

redis:

image: redis:alpine

deploy:

replicas: 6

placement:

max_replicas_per_node: 1

compose还有一个相对重要的概念network

首先,我们可以给不同的service声明一到多个networks

图片

这样就可以给不同的service,设置为不同的子网

不过在声明完成子网之后,还需要设置这个network的信息

图片

这样才可以进行生效

发表评论

邮箱地址不会被公开。 必填项已用*标注