Questions tagged «docker-compose»

Compose是用于使用Docker定义和运行复杂应用程序的工具。使用Compose,您可以在一个文件中定义一个多容器应用程序,然后在一个命令中旋转应用程序,该命令完成了运行该应用程序所需的一切。

9
Docker-compose检查mysql连接是否准备就绪
我试图确保我的应用容器在数据库容器启动并且准备接受连接之前不运行迁移/启动。 所以我决定使用运行状况检查,并取决于docker compose文件v2中的选项。 在应用程序中,我有以下内容 app: ... depends_on: db: condition: service_healthy 另一方面,数据库具有以下运行状况检查 db: ... healthcheck: test: TEST_GOES_HERE timeout: 20s retries: 10 我尝试了几种方法,例如: 确保已创建数据库DIR test: ["CMD", "test -f var/lib/mysql/db"] 获取mysql版本: test: ["CMD", "echo 'SELECT version();'| mysql"] 对管理员执行ping操作(将db容器标记为运行状况良好,但似乎不是有效的测试) test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] 有人对此有解决方案吗?

8
不支持“ ./docker-compose.yml”中的版本。您可能会看到此错误,因为使用的是错误的Compose文件版本
这是我的docker-compose.yml文件: version: '3.1' services: a: image: tutum/hello-world b: image: tutum/hello-world secrets: id: my_password 如果我跑步,$ docker-compose-up我会得到: 不支持“ ./docker-compose.yml”中的版本。您可能会看到此错误,因为使用的是错误的Compose文件版本。 我的docker-compose版本: $ docker-compose --version docker-compose version 1.11.0, build 6de1806 怎么了 我的docker-compose版本是否应该支持docker-compose.yml规范的v3.1版本(根据发行说明,确实如此)?

2
如何在Docker撰写文件中转义$符号?
我有一个YAML标量,当我尝试评估docker-compose.yml文件时会引发以下错误: 错误:服务“ time_service”中“环境”选项的无效插值格式:“ $ {Time.now}” YAML: --- version: '2' services: time_service: build: "." environment: TIME: "${Time.now}" 如何保持与写入相同的字符串输出,但避免让docker-compose将其解释为错误的字符串插值?

4
Docker-图像操作系统“ windows”不能在该平台上使用
我在Windows 10机器上尝试过此操作: Dockerfile: From microsoft/nanoserver CMD ["echo", "Hello World"] 聚苯乙烯 C:\FSD\Docker\Trial1> docker build -t lea/leatest . Sending build context to Docker daemon 2.048kB Step 1/2 : FROM microsoft/nanoserver latest: Pulling from microsoft/nanoserver bce2fbc256ea: Pulling fs layer 58f68fa0ceda: Pulling fs layer image operating system "windows" cannot be used on this platform

9
使用带有CI的docker-compose-如何处理退出代码和守护程序链接的容器?
现在,我们的Jenkins代理为我们的每个Rails项目生成一个docker-compose.yml,然后运行docker-compose。docker-compose.yml具有一个主要的“ Web”容器,其中包含rbenv和我们所有其他的Rails依赖项。它链接到包含测试Postgres DB的数据库容器。 问题出在我们需要实际运行测试并生成退出代码时。仅当测试脚本返回exit 0时,我们的CI服务器才会部署,但是docker-compose始终返回0,即使其中一个容器命令失败。 另一个问题是,即使Web容器完成了运行测试之后,DB容器也会无限期地运行,因此docker-compose up永远不会返回。 有什么方法可以在此过程中使用docker-compose吗?我们将需要能够运行容器,但是在Web容器完成后退出并返回其退出代码。现在,我们使用docker手动启动数据库容器,并使用--link选项运行Web容器。

2
在Docker-Compose中禁用一个容器的日志记录
我有一个使用Docker compose启动的Web应用程序,我想禁用所有日志记录(或者至少将其打印到syslog而不是文件中)。 当我的Web应用程序运行时,它可以在启动时快速生成一个11GB的日志文件,因此这会非常快地耗尽我的磁盘空间。 我知道普通docker的run命令都有日志选项,但是在Docker Compose中,我使用 Docker组成 在应用程序文件夹中启动我的应用程序。我该如何启用此功能?我看不到在线上任何地方的特定案例。

22
Docker错误:无效的引用格式:存储库名称必须为小写
使用我的一个项目遇到此Docker错误: invalid reference format: repository name must be lowercase 产生此通用消息的各种原因是什么? 经过一些努力,我已经弄清楚了,所以我将回答我自己的问题,以便在此处进行记录,因为在进行网络搜索时解决方案不会立即出现,并且因为此错误消息并未描述Docker遇到的直接问题。

12
如何在Docker机器中挂载本地卷
我正在尝试将docker-machine与docker-compose一起使用。文件docker-compose.yml的定义如下: web: build: . command: ./run_web.sh volumes: - .:/app ports: - "8000:8000" links: - db:db - rabbitmq:rabbit - redis:redis 运行时docker-compose up -d一切顺利,直到尝试执行命令并产生错误为止: 无法启动容器b58e2dfa503b696417c1c3f49e2714086d4e9999bd71915a53502cb6ef43936d:[8]系统错误:exec:“ ./run_web.sh”:stat ./run_web.sh:无此类文件或目录 本地卷未安装到远程计算机上。建议使用Webapp的代码挂载本地卷的策略是什么?



3
如何在主机上为docker-compose.yml中的命名卷设置路径
下面的示例创建名为volume的dbdata,并在db服务中对其进行引用: version: '2' services: db: image: mysql volumes: - dbdata:/var/lib/mysql volumes: dbdata: driver: local (来自https://stackoverflow.com/a/35675553/4291814) 我可以看到该卷的默认路径为: /var/lib/docker/volumes/<project_name>_dbdata 我的问题是如何在主机上为该dbdata卷配置路径?

3
何时使用Docker-Compose和何时使用Docker-Swarm
我试图了解Docker-Compose和Docker-Swarm之间的差异或相似之处。 通过阅读文档,我了解到docker-compose提供了一种将不同容器绑定在一起并在单个服务中协同工作的机制(我猜它使用的功能与--link命令用于链接两个容器的功能相同) 另外,我对docker-swarm的理解是,它允许您管理不同docker-host的集群,每个集群都在运行某些docker-images的多个容器实例。我们可以将连接定义为群集中不同容器之间的覆盖网络(即使它们跨越群集中的两个docker-hosts)以将它们作为一个单元进行连接。 我想了解的是docker-swarm成功的docker-compose和overlay网络是连接容器的新方法(推荐)吗? 还是docker-compose仍然是整个docker系列的组成部分,并且期望并建议使用它来连接容器以进行协作。如果是这样,docker-compose是否可以与群集中不同节点上的容器一起使用? 还是覆盖网络用于在群集中的不同主机之间连接容器,而docker-compose用于创建内部链接? 此外,我还看到docker文档中提到了--links不再被推荐,并且很快就会过时。 我有点困惑??? 非常感谢!

4
E:软件包“ mysql-client”在使用docker compose的php-fpm映像构建中没有安装候选对象
我是docker的新手,所以我尝试通过laravel项目了解更多有关docker的信息,并按照以下教程进行操作: https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose?comment=77842 我已经根据教程中的内容对Dockerfile进行了一些调整,但是即使教程文件也会导致相同的结果。 FROM php:7.3-fpm # Copy composer.lock and composer.json COPY composer.lock composer.json /var/www/ # Install dependencies RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - && \ apt-get update && apt-get install -y mysql-client \ RUN npm install -g npm # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # …

7
如何在启动时为MongoDB容器创建数据库?
我正在使用Docker,并且拥有PHP,MySQL,Apache和Redis的堆栈。我现在需要添加MongoDB,因此我正在检查Dockerfile中的最新版本以及MongoDB Dockerhub中的docker-entrypoint.sh文件,但我找不到设置默认数据库,管理员用户/密码以及可能进行身份验证的方法文件中容器的方法。docker-compose.yml 在MySQL中,您可以设置一些ENV变量,例如: db: image: mysql:5.7 env_file: .env environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} 这将设置数据库和用户/密码作为root密码。 MongoDB有什么方法可以实现相同目的吗?任何人都有经验或解决方法?

10
如何获取docker-compose以使用存储库中的最新映像
我不知道我在做什么错,但是我docker-compose up必须先从系统中完全删除旧容器,然后才能从注册表中使用最新映像。即使docker-compose pull获取了新的映像,compose似乎仍在使用先前启动的映像。 我研究了如何使docker-compose始终从新映像重新创建容器?这似乎与我的问题相似,但是那里提供的解决方案都不适合我,因为我正在寻找可以在生产服务器上使用的解决方案,因此我不想在启动它们之前先删除所有容器再次(可能丢失数据?)。我只想检测更改图像的新版本,将它们拉出,然后使用这些新图像重新启动服务。 为此,我创建了一个简单的测试项目,其中唯一的目标是在每个新版本中增加版本nr。如果浏览到创建的Nginx服务器,则会显示nr版本(这在本地可以正常工作)。 docker版本:1.11.2 docker-compose版本:1.7.1 OS:已使用docker-toolbox在CentOS 7和OS X 10.10上进行了测试 我的docker-compose.yml: version: '2' services: application: image: ourprivate.docker.reg:5000/ourcompany/buildchaintest:0.1.8-dev volumes: - /var/www/html tty: true nginx: build: nginx ports: - "80:80" volumes_from: - application volumes: - ./logs/nginx/:/var/log/nginx php: container_name: buildchaintest_php_1 build: php-fpm expose: - "9000" volumes_from: - application volumes: - ./logs/php-fpm/:/var/www/logs 在我们的jenkins服务器上,我运行以下命令来构建和标记图像 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.