【问题标题】:Where do yesod binaries expect to find the config folder?yesod 二进制文件希望在哪里找到配置文件夹?
【发布时间】:2016-04-09 11:25:49
【问题描述】:

问题描述

我正在创建一个 docker 容器来运行 haskell 二进制文件。有问题的二进制文件是一个用 yesod 构建的网站。当容器启动时,它看起来很有希望,但随后失败:

config/client_session_key.aes: openBinaryFile: does not exist (No such file or directory)

重建步骤

二进制文件的 Dockerfile 非常基础。它看起来像这样:

FROM haskell:7.10.3
MAINTAINER Garry Cairns
ENV REFRESHED_AT 2015-09-05

RUN ["apt-get", "-y", "update"]
RUN ["apt-get", "-y", "install", "libpq-dev"]

我使用 docker-compose 将其链接到数据库。 docker-compose 文件如下所示:

version: "2.0"
services:
  database:
    image: postgres
    env_file: ./database/env
  binary:
    build: ./binary
    command: /opt/server/api
    env_file: ./api/env
    links:
      - database
    tty: false
    volumes:
      - /etc/ssl/certs/:/etc/ssl/certs/
      - ./binary:/opt/server/

二进制文件的volumes 行特别重要,因为它将二进制文件连同其静态和配置目录一起加载到容器中。我已经检查过它们确实存在并且它们确实存在,所以容器文件结构最终看起来像这样:

/opt/server
    binary_file
    /static
        ...
    /config
        client_session_key.aes
        ...

连接到数据库似乎正在工作,因为我在日志记录中看到了一些这样的行

binary_1   | Migrating: ALTER TABLE "blog" ALTER COLUMN "title" TYPE varchar(50)

在我看到错误消息之前。

问题

我怀疑我需要将配置文件夹移动到二进制文件期望找到它的替代位置,或者在构建它之前在 yesod 应用程序中的某处设置环境变量。到目前为止,我一直无法找到要设置的预期位置或正确的环境变量。有谁知道我错过了什么?

【问题讨论】:

  • 错误消息使它看起来像是在当前工作目录 (CWD) 的相对路径中查找 config/client_session_key.aes。是否像在 compose YAML 中指定 Dockerfileworking_dir 中的 WORKDIR/opt/server 一样简单?
  • @AndyShinn,先生,您赢了。 WORKDIR 没有做到这一点,但 working_dir 做到了。请将此添加为答案,我会接受。

标签: haskell docker yesod docker-compose


【解决方案1】:

错误消息使它看起来像是在当前工作目录 (CWD) 的相对路径中查找 config/client_session_key.aes。是否像在 Dockerfile 中指定 WORKDIR 或在撰写 YAML 中将 working_dir 指定为 /opt/server 一样简单?

WORKDIR 上用于在映像构建时设置默认 CWD 的信息将位于 https://docs.docker.com/engine/reference/builder/#workdir

在运行时设置 Compose working_dir 的信息位于 https://docs.docker.com/compose/compose-file/#cpu-shares-cpu-quota-cpuset-domainname-hostname-ipc-mac-address-mem-limit-memswap-limit-privileged-read-only-restart-stdin-open-tty-user-working-dir

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 2011-02-10
    相关资源
    最近更新 更多