【问题标题】:Docker Compose Failing for commandDocker Compose 命令失败
【发布时间】:2022-01-09 10:18:35
【问题描述】:

Dockerfile:

FROM hseeberger/scala-sbt:8u222_1.3.5_2.13.1
WORKDIR /code/SimpleStocks
COPY ./SimpleStocks .
RUN sbt dist
WORKDIR /code/SimpleStocks/target/universal
RUN unzip simplestocks-0.0.1.zip
WORKDIR /code/SimpleStocks/target/universal/simplestocks-0.0.1
CMD ["bin/simplestocks"]

docker-compose.yml:

version: "3.7"
services:
  app:
    container_name: simple-stocks
    image: simple-stocks:1.0.0
    build: .
    ports:
      - '9000:9000'
    volumes:
      - .:/code
    links:
      - pgdb1
  pgdb1:
    image: postgres
    environment:
      POSTGRES_DB: simple_stocks
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
    volumes:
      - pgdb1data:/var/lib/postgresql/data/
      - ./docker_postgres_init.sql:/docker-entrypoint-initdb.d/docker_postgres_init.sql
    ports:
      - '5432:5432'
volumes:
  pgdb1data:

当我使用 docker run -it {imageId} 手动运行 simple-stocks 容器时,我能够成功运行它;但是,在做 docker compose up 时,我收到了:

来自守护程序的错误响应:OCI 运行时创建失败: container_linux.go:380:启动容器进程导致:exec: “bin/simplestocks”:统计 bin/simplestocks:没有这样的文件或目录: 未知

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    您的 Dockerfile 正在 /code/SimpleStocks/target/universal/simplestocks-0.0.1 中构建应用程序,但随后您的 Compose 文件在 /code 上绑定挂载了一个主机目录,这隐藏了 Dockerfile 所做的一切。绑定挂载是不必要的,删除它将解决此问题。

    在整个构建的应用程序上绑定挂载主机目录通常不是最佳实践。我经常看到它试图说服 Docker 模拟本地开发环境,但即使这种方法对于像 Scala 这样的编译语言也没有意义。

    您可以安全地删除 volumes: 块。也可以删除过时的links:。您不需要手动指定container_name:,也不需要同时指定build:image:,除非您打算将构建的映像推送到注册表。这会将 Compose 设置减少到:

    version: '3.8'
    services:
      app:
        build: .
        ports:
          - '9000:9000'
      pgdb1: (as in the question originally)
    volumes:
      pgdb1data:
    

    【讨论】:

    • 我的用例是创建一个本地开发环境,我需要将我的主机源代码与 docker 容器同步。那么有什么办法可以用 docker-compose 来做,或者我必须在一个 docker 容器中本地安装所有依赖项
    • 你可以install sbtScala;你不需要像 Docker 那样引入隔离环境,然后尝试禁用它的隔离功能。还可以将sbt-native-packager 视为构建 Docker 映像的工具,而无需自己管理 Dockerfile。这不会是一个实时开发环境,恕我直言,这不是 Docker 的真正优势。
    猜你喜欢
    • 2021-06-15
    • 2022-01-16
    • 2019-04-28
    • 2019-02-16
    • 1970-01-01
    • 2019-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多