DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx

上传人:b****6 文档编号:22237341 上传时间:2023-02-03 格式:DOCX 页数:18 大小:36.68KB
下载 相关 举报
DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx_第1页
第1页 / 共18页
DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx_第2页
第2页 / 共18页
DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx_第3页
第3页 / 共18页
DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx_第4页
第4页 / 共18页
DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx

《DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx》由会员分享,可在线阅读,更多相关《DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

DockerCompose之SpringCloud大型企业分布式微服务云架构源码文档格式.docx

创建软链:

$sudoln-s/usr/local/bin/docker-pose/usr/bin/docker-pose

测试否成功:

$docker-pose--version

cker-poseversion1.24.1,build46676b

注意:

对于alpine,需要以下依赖包:

py-pip,python-dev,libffi-dev,openssl-dev,gcc,libc-dev,和make。

macOS

Mac的Docker桌面版和DockerToolbox已经包括Compose和其他Docker应用程序,因此Mac用户不需要单独Compose。

Docker说明可以参阅。

windowsPC

Windows的Docker桌面版和DockerToolbox已经包括Compose和其他Docker应用程序,因此Windows用户不需要单独Compose。

使用

1、准备

创建一个测试目录:

$mkdirposetest

$cdposetest

在测试目录中创建一个名为app.py的文件,并复制粘贴以下内容:

posetest/app.py文件代码

importtime

importredis

fromflaskimportFlask

app=Flask(__name__)

cache=redis.Redis(host='

redis'

port=6379)

defget_hit_count():

retries=5

whileTrue:

try:

returncache.incr('

hits'

exceptredis.exceptions.ConnectionErrorasexc:

ifretries==0:

raiseexc

retries-=1

time.sleep(0.5)

@app.route('

/'

defhello():

count=get_hit_count()

return'

HelloWorld!

Ihavebeenseen{}times.\n'

.format(count)

在此示例中,redis应用程序网络上的redis容器的主机名,该主机使用的端口为6379。

在posetest目录中创建另一个名为requirements.txt的文件,内容如下:

flask

redis

2、创建Dockerfile文件

在posetest目录中,创建一个名为的文件Dockerfile,内容如下:

FROMpython:

3.7-alpine

WORKDIR/code

ENVFLASK_APPapp.py

ENVFLASK_RUN_HOST0.0.0.0RUNapka--no-cachegccmusl-devlinux-headers

COPYrequirements.txtrequirements.txt

RUNpipinstall-rrequirements.txt

COPY..CMD["

flask"

"

run"

]

Dockerfile内容解释:

3.7-alpine:

从Python3.7映像始构建镜像。

WORKDIR/code:

将工作目录设置为/code。

ENVFLASK_RUN_HOST0.0.0.0

设置flask命令使用的环境变量。

RUNapka--no-cachegccmusl-devlinux-headers:

gcc,以便诸如MarkupSafe和SQLAlchemy之类的Python包可以编译加速。

复制requirements.txt并Python依赖项。

COPY..:

将.中的当前目录复制到.镜像中的工作目录。

CMD["

]:

容器默认的执行命令为:

flaskrun。

3、创建docker-pose.yml

在测试目录中创建一个名为docker-pose.yml的文件,然后粘贴以下内容:

docker-pose.yml配置文件

#yaml配置

"

redis:

alpine"

该Compose文件定义了两个:

web和redis。

web:

该web使用从Dockerfile当前目录中构建的镜像。

然后,它将容器和主机绑定到暴露的端口5000。

此示例使用FlaskWeb器的默认端口5000。

redis:

该redis使用DockerHub的公共Redis映像。

4、使用Compose命令构建和运行您的应用

在测试目录中,执行以下命令来启动应用程序:

docker-poseup

如果你想在后台执行该可以加上-d参数:

docker-poseup-d

yml配置指令参考

version

指定本yml依从的pose哪个版本制定的。

build

指定为构建镜像上下文路径:

例如webapp,指定为从上下文路径./dir/Dockerfile所构建的镜像:

version:

3.7"

webapp:

build:

./dir

或者,作为具有在上下文指定的路径的对象,以及可选的Dockerfile和args:

context:

dockerfile:

Dockerfile-alternate

args:

buildno:

1

labels:

.example.description=Accountingwebapp"

.example.department=Finance"

.example.label-with-empty-value"

target:

prod

context:

上下文路径。

dockerfile:

指定构建镜像的Dockerfile文件名。

args:

构建参数,这只能在构建过程中访问的环境变量。

labels:

设置构建镜像的标签。

target:

多层构建,可以指定构建哪一层。

cap_a,cap_drop

或删除容器拥有的宿主机的内核功能。

cap_a:

-ALL#启全部权限cap_drop:

-SYS_PTRACE#关闭ptrace权限

cgroup_parent

为容器指定父cgroup组,意味着将继承该组的资源限制。

cgroup_parent:

m-executor-abcd

mand

覆盖容器启动的默认命令。

mand:

["

bundle"

exec"

thin"

-p"

3000"

container_name

指定自定义容器名称,而不生成的默认名称。

container_name:

my-web-container

depends_on

设置依赖关系。

docker-poseup:

以依赖性顺序启动。

在以下示例中,先启动db和redis,才会启动web。

docker-poseupSERVICE:

自动包含SERVICE的依赖项。

在以下示例中,docker-poseupweb还将创建并启动db和redis。

docker-posestop:

按依赖关系顺序停止。

在以下示例中,web在db和redis之前停止。

depends_on:

-db-redis

image:

db:

postgres

web不会等待redisdb完全启动之后才启动。

deploy

指定与的部署和运行有关的配置。

只在swarm模式下才会有用。

alpine

deploy:

mode:

replicated

replicas:

6

endpoint_mode:

dnsrr

description:

Thisredisservicelabel"

resources:

limits:

cpus:

0.50'

memory:

50M

reservations:

0.25'

20M

restart_policy:

condition:

on-failure

delay:

5s

max_attempts:

3

window:

120s

可以选参数:

endpoint_mode:

访问集群的。

endpoint_mode:

vip

#Docker集群一个对外的虚拟ip。

所有的请求都会通过这个虚拟ip到达集群内部的机器。

dnsrr#DNS轮询(DNSRR)。

所有的请求会自动轮询获取到集群ip列表中的一个ip。

在上设置标签。

可以用容器上的labels(跟deploy同级的配置)覆盖deploy下的labels。

mode:

指定的模式。

replicated:

复制,复制指定到集群的机器上。

global:

全局,将部署至集群的每个节。

图解:

下图中的方块replicated模式的运行情况,灰色方块global模式的运行情况。

replicas:

mode为replicated时,需要使用此参数配置具体运行的节数量。

resources:

配置器资源使用的限制,例如上例子,配置redis集群运行需要的cpu的百分比和内存的占用。

避免占用资源过高出现异常。

restart_policy:

配置如何在退出容器时重新启动容器。

condition:

可选none,on-failure或者any(默认值:

any)。

delay:

设置多久之后重启(默认值:

0)。

max_attempts:

尝试重新启动容器的次数,超出次数,则不再尝试(默认值:

一直重试)。

window:

设置容器重启超时时间(默认值:

rollback_config:

配置在更新失败的情况下应如何回滚。

parallelism:

一次要回滚的容器数。

如果设置为0,则所有容器将同时回滚。

每个容器组回滚之间等待的时间(默认为0s)。

failure_action:

如果回滚失败,该怎么。

其中一个continue或者pause(默认pause)。

monitor:

每个容器更新后,持续观察否失败了的时间(ns|us|ms|s|m|h)(默认为0s)。

max_failure_ratio:

在回滚期间可以容忍的故障率(默认为0)。

order:

回滚期间的操作顺序。

其中一个stop-first(串行回滚),或者start-first(并行回滚)(默认stop-first)。

update_config:

配置应如何更新,对于配置滚动更新很有用。

一次更新的容器数。

在更新一组容器之间等待的时间。

如果更新失败,该怎么。

其中一个continue,rollback或者pause(默认:

pause)。

在更新过程中可以容忍的故障率。

其中一个stop-first(串行回滚),或者start-first(并行回滚)(默认stop-first)。

注:

仅支持V3.4及更高版本。

devices

指定设备映列表。

devices:

/dev/ttyUSB0:

/dev/ttyUSB0"

dns

自定义DNS器,可以单个值或列表的多个值。

dns:

8.8.8.8dns:

-8.8.8.8

-9.9.9.9

dns_search

自定义DNS搜索域。

可以单个值或列表。

dns_search:

example.

-dc1.example.-dc2.example.

entrypoint

覆盖容器默认的entrypoint。

entrypoint:

/code/entrypoint.sh

也可以以下格式:

-php--d-zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so--d-memory_limit=-1

-vendor/bin/phpunit

env_file

从文件环境变量。

可以单个值或列表的多个值。

`env_file:

.env`

也可以列表格式:

env_file:

-./mon.env-./apps/web.env-/opt/secrets.env

environment

环境变量。

您可以使用数组或字典、任何布尔值,布尔值需要用引号引起来,以确保YML解析器不会将其转换为True或False。

environment:

RACK_ENV:

development

SHOW:

true'

expose

暴露端口,但不映到宿主机,只被连接的访问。

仅可以指定内部端口为参数:

expose:

8000"

extra_hosts

主机名映。

类似dockerclient--a-host。

extra_hosts:

somehost:

162.242.195.82"

otherhost:

50.31.209.229"

以上会在此的内部容器中/etc/hosts创建一个具有ip和主机名的映关系:

162.242.195.82somehost50.31.209.229otherhost

healthcheck

用于检测docker否健康运行。

healthcheck:

test:

CMD"

curl"

-f"

]#设置检测程序

interval:

1m30s#设置检测间隔

timeout:

10s#设置检测超时时间

retries:

3#设置重试次数

start_period:

40s#启动后,多少秒始启动检测程序

image

指定容器运行的镜像。

以下格式都可以:

image:

ubuntu:

14.04image:

tutum/influxdb

example-registry.:

4000/postgresql

a4bc65fd#镜像id

logging

的日志记录配置。

driver:

指定容器的日志记录驱动程序,默认值为json-file。

有以下三个选项

driver:

json-file"

syslog"

none"

仅在json-file驱动程序下,可以使用以下参数,限制日志得数量和小。

logging:

driver:

json-file

options:

max-size:

200k"

#单个文件小为200k

max-file:

10"

#最多10个文件

当达到文件限制上限,会自动删除旧得文件。

syslog驱动程序下,可以使用syslog-aress指定日志接收。

syslog

syslog-aress:

tcp:

//192.168.0.42:

123"

network_mode

设置网络模式。

network_mode:

bridge"

host"

service:

[servicename]"

container:

[containername/id]"

networks

配置容器连接的网络,引用networks下的条目。

some-service:

networks:

some-network:

aliases:

-alias1

other-network:

-alias2

networks:

#Useacustomdriver

custom-driver-1

#Useacustomdriverwhichtakesspecialoptions

custom-driver-2

aliases:

同一网络上的其他容器可以使用名称或此别名来连接到对应容器的。

restart

no:

默认的重启策略,在任何情况下都不会重启容器。

always:

容器总重新启动。

on-failure:

在容器非正常退出时(退出状态非0),才会重启容器。

unless-stopped:

在容器退出时总重启容器,但不考虑在Docker守护进程启动时就已经停止了的容器

restart:

no"

always

unless-stopped

swarm集群模式,请改用restart_policy。

secrets

存储敏感数据,例如密码:

3.1"

mysql:

mysql

environment:

MYSQL_ROOT_PASSWORD_FILE:

/run/secrets/my_secret

secrets:

-my_secret

secrets:

my_secret:

file:

./my_secret.txt

security_opt

容器默认的schema标签。

security-opt:

-label:

user:

USER#设置容器的用户标签

role:

ROLE#设置容器的角色标签

type:

TYPE#设置容器的策略标签

level:

LEVEL#设置容器的等级标签

stop_grace_period

指定在容器无法处理SIGTERM(或者任何stop_signal的信号),等待多久后SIGKILL信号关闭容器。

stop_grace_period:

1s#等待1秒stop_grace_period:

1m30s#等待1分30秒

默认的等待时间10秒。

stop_signal

设置停止容器的替代信号。

默认情况下使用SIGTERM。

以下示例,使用SIGUSR1替代信号SIGTERM来停止容器。

stop_signal:

SIGUSR1

sysctls

设置容器中的内核参数,可以使用数组或字典格式。

sysctls:

net.core.somaxconn:

1024

net.ipv4.tcp_syncookies:

0sysctls:

-net.core.somaxconn=1024

-net.ipv4.tcp_syncookies=0

tmpfs

在容器内一个临时文件系统。

tmpfs:

/run

-/run-/tmp

ulimits

覆盖容器默认的ulimit。

ulimits:

nproc:

65535

nofile:

soft:

20000

hard:

40000

volumes

将主机的数据卷或着文件挂载到容器里。

postgres:

latest

volumes:

/localhost/postgres.sock:

/var/run/postgres/postgres.sock"

/localho

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1