Heroku + DockHero

Heroku + DockHero

我在将应用程序部署到 DockHero 时遇到了一些问题。如您所见,我正在尝试 运行 这个命令,正如 heroku 在其文档中所说的那样:

ubuntu@ip-***-**-**-**:~/syncfusion$ heroku dh:compose up -d -a APP_NAME

但这种情况发生了:

Unknow flag: --file
See 'docker --help'.

这是我的 dockhero-compose.yml 文件:

version: '3.4'
services:
  word-processor-server:
    image: syncfusion/word-processor-server:latest
    environment:
      SYNCFUSION_LICENSE_KEY: MY_LICENSE
    ports:
    - "6002:80"

我错过了什么?

你在本地安装了Docker Compose吗?

looks like heroku dh:compose up -d -a foo只是运行s

docker compose --file dockhero-compose.yml -p dockhero up -d -a foo

但是如果 Docker Compose 未正确安装,您应该会收到与您看到的错误类似的错误。


在某些操作系统上,Docker Compose 似乎没有正确添加为 Docker 子命令。即,docker-compose 有效,但 docker compose 无效。

heroku dh:compose 运行s docker compose 开始,它将在此类系统上失败。

This Gist 展示了一种将 Docker Compose 注册为 Docker 子命令的方法:

  1. 创建一个~/.docker/cli-plugins目录:

     mkdir -p ~/.docker/cli-plugins
    
  2. 创建一个包含如下所示脚本的文件~/.docker/cli-plugins/docker-compose

  3. 使该文件可执行:

     chmod +x ~/.docker/cli-plugins/docker-compose
    

应该将 Docker Compose 注册为 Docker 插件,这样您就可以 运行 docker compose,这又应该使 heroku dh:compose 工作。

来自 Gist 的脚本:

#!/usr/bin/env bash

docker_cli_plugin_metadata() {
    if [ -z "$DOCKER_COMPOSE_VERSION" ]; then
        export DOCKER_COMPOSE_VERSION="$(docker-compose --version | cut -d " " -f 3 | cut -d "," -f 1)"
    fi

    local vendor="Docker"
    local url="https://www.docker.com"
    local description="Define and run multi-container applications"
    cat <<-EOF
    {"SchemaVersion":"0.1.0","Vendor":"${vendor}","Version":"${DOCKER_COMPOSE_VERSION}","ShortDescription":"${description}","URL":"${url}"}
EOF
}

case "" in
    docker-cli-plugin-metadata)
        docker_cli_plugin_metadata
        ;;
    *)
        exec "docker-$@"
        ;;
esac