Docker:实战操作--Docker Compose


DockerCompose是用来定义以及运行多容器应用的工具.
Docker官方推荐使用DockerCompose来构建开发环境的服务,不推荐在生产环境当中使用.
当前微服务架构盛行,我们不可能为每个依赖的服务搭建一套环境,创建容器以及镜像.当我们迫切的需要一个工具解决我们开发环境的复杂性,达到一键运行的目的,因此DockerCompose就出现了.
本文是接着上篇文章的例子进行操作,请最好阅读完Docker:实战操作–安装与基础操作来保证你对本章的理解.

Docker Compose 安装

直接通过下载安装:

sudo -i #获取sudo权限防止curl命令写入权限不足
curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Docker Compose 重要配置参数解析

docker-compose.yml文件是用来构建服务的配置文件.
docker-compose.yml文件中定义的每个服务必须要指定imagebuild的参数.

参数解析

1.image:镜像的名称,标签或者部分ID
2.build:包含一个Dockerfile构建的目录.
3.command:重写执行命令.
4.links:链接服务中的容器到另一个容器
5.external_links:链接外部容器(不在该docker-compose.yml配置内或不是Compose启动的容器)
6.extra_hosts:IP域名映射
7.ports:端口映射到主机
8.volumes:挂载点映射
9.volumes_from:卷积映射从另一个容器或服务的映射,形式与上一边所讲的一致
10.environment:定义一些系统环境变量
11.extends:主要是用于依赖文件关系的继承
common.yml:

webapp:
  build: ./webapp
  environment:
    - DEBUG=false
    - SEND_EMAILS=false

development.yml

web:
  #指明需要继承
  extends:
  	#文件所在路径
    file: common.yml
	#服务名称
    service: webapp	
  ports:
    - "8000:8000"
  links:
    - db
  #覆盖重写 
  environment:
    - DEBUG=true
db:
  image: postgre

12.net:指定网络连接规则
13.labels:使用字典或者数组定义源数据,可以数组也可以字典,防止标签冲突,推荐使用域名反写加上key

labels:
  - "com.example.description=Accounting webapp"

#或者

labels:
  com.example.description: "Accounting webapp"

Docker Compose运行

定义DockerCompse配置文件

接着上篇文章的例子,定义如下文件.

#定义web服务
web:
	#定义构建的目录,该目录下有Dockerfile,app.py,requirements三个文件
    build: ~/pt
	#定义端口映射
    ports:
    - "5000:80"
    #将当前的目录挂载到容器当中,方便代码修改后直接访问容器观察效果
    volumes:
    - .:/code
    links:
    - redis
#定义redis服务  
redis:
	#从镜像拉取redis服务
    image: redis

自动构建以及运行

运行如下命令会自动构建定义的服务:拉取redis镜像以及根据build目录读Dockerfile定义的规则构建服务.
-d参数标明需要检测是否自动创建,如果已经创建不会再创建.

sudo docker-compose -d up 

其它操作

当操作Compose运行了服务后,我们可以进行扩容:

sudo docker-compose scale web=2

上述例子我们将web扩容为2个.

有时候我们需要运行Compose配置文件当中单独的一个服务.
例如我们单独运行web服务不运行redis服务.

sudo docker-compose run --no-deps web

除此之外还有一些常用的操作,ps(列出容器),restart,kill,build(只构建),up(创建并运行),rm(删除停止的容器),kill(停止容器).

### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值