【问题标题】:Run docker-compose from bash script file从 bash 脚本文件运行 docker-compose
【发布时间】:2017-07-17 21:56:58
【问题描述】:

我是脚本新手,需要一些帮助。我正在使用 YML 文件构建 docker 容器。我编写了 YML 代码来自动化我的 Web 服务器(docker-compose.yml)和数据库服务器(docker-compose-mongo.yml)。

现在我想构建一个 bash 脚本,它将调用两个 yml 文件并一起运行。

我想知道我需要在我的 shell 脚本中键入什么命令来调用这两个 yml 文件并将它们一起运行。我最初只是使用

#!/bin/bash
run docker-compose.yml

但是上面的代码不起作用。

附言。下面是我的 web 服务器的 yml 文件

version: "3"
services:
  web:
    image: nginx:latest
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.2"
          memory: 330M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    # networks:
      # - webnet
# networks:
  # webnet:

【问题讨论】:

  • “来自 YML 文件”的含义与“来自 JSON 文件”一样多——两者都是完全通用的格式。它是 docker-compose 描述的事实更相关。
  • 更重要的是——“没用”并没有告诉我们几乎足够有用。至少,我们想知道有问题的确切错误。
  • 所以我的脚本名称是test。 sh,当我运行我的测试脚本时,它给出了一个错误“test.sh not found”
  • 您在这里向我们展示的任何内容都没有演示如何将该脚本安装到 Docker 容器中,如果没有安装,失败与预期的完全一致。请尝试将重现确切错误所需的所有内容作为问题本身的一部分包含在内,否则请遵守minimal reproducible example定义。
  • 如果你想运行 docker-compose up 语句,你只需运行它。删除docker-compose.yml之前的run命令,你需要写docker-compose up来执行撰写过程。

标签: shell nginx docker scripting containers


【解决方案1】:

您可以单独调用它们:

#!/bin/bash
docker-compose -f docker-compose.yml up -d
docker-compose -f docker-compose-mongo.yml up -d

或者将nginxmongo 服务组合在同一个docker-compose.yml 中。

【讨论】:

    【解决方案2】:

    你可以在同一个命令上有多个 yml 文件:

    docker-compose -f docker-compose.yml -f docker-compose-mongo.yml up -d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2018-02-22
      • 1970-01-01
      相关资源
      最近更新 更多