【问题标题】:How to install packages from Docker compose?如何从 Docker compose 安装软件包?
【发布时间】:2018-06-02 20:08:31
【问题描述】:

您好,我是 Docker 新手。我有一个 docker-compose.yml,它看起来像这样:

version: "3"

services:
  lmm-website:
    image: lmm/lamp:php${PHP_VERSION:-71}
    container_name: ${CONTAINER_NAME:-lmm-website}
    environment:
      HOME: /home/user
    command: supervisord -n
    volumes:
      - ..:/builds/lmm/website
      - db_website:/var/lib/mysql
    ports:
      - 8765:80
      - 12121:443
      - 3309:3306
    networks:
      - ntw

volumes:
  db_website:

networks:
  ntw:

我想从 docker-compose 文件中安装 Yarn 包管理器:

sudo apt-get update && sudo apt-get install yarn

我不知道如何声明这个,我试过了

command: supervisord -n && sudo apt-get update && sudo apt-get install yarn

静默失败。我该如何正确声明?还是 docker-compose.yml 是错误的地方?

【问题讨论】:

    标签: docker docker-compose package-managers


    【解决方案1】:

    为什么不使用专为此任务设计的Dockerfile

    将“image”属性更改为“build”属性以链接 Dockerfile。

    你的 docker-compose.yml 看起来像这样:

    services:
      lmm-website:
        build: 
          context: .
          dockerfile: Dockerfile
        container_name: ${CONTAINER_NAME:-lmm-website}
        environment:
          HOME: /home/user
        command: supervisord -n
          volumes:
            - ..:/builds/lmm/website
            - db_website:/var/lib/mysql
        ports:
          - 8765:80
          - 12121:443
          - 3309:3306
        networks:
          - ntw
    
    volumes:
      db_website:
    
    networks:
    

    然后在与 docker-compose.yml 相同的路径下创建一个名为 Dockerfile 的文本文件,内容如下:

    FROM lmm/lamp:php${PHP_VERSION:-71}
    
    RUN apt-get update && apt-get install -y bash
    

    除了其他 Dockerfile 功能(如 ADD、COPY 等)之外,您可以使用 Dockerfile 的 RUN(cp、mv、ls、bash...)添加任意数量的 SO 命令。

    +信息:

    https://docs.docker.com/engine/reference/builder/

    +现场示例:

    我创建了一个名为 hello-docker-react 的 github 项目。顾名思义,它是一个 docker-react 盒子,可以作为示例,因为我正在使用我上面解释的过程安装 yarn 和其他工具。

    除此之外,我还使用 docker-compose 入口点属性链接到 docker-compose.yml 文件的入口点 bash 脚本启动纱线。

    https://github.com/lopezator/hello-docker-react

    【讨论】:

      【解决方案2】:

      您只能使用Dockerfile 来执行此操作,因为docker-compose.yml 中的command 运算符仅在命令执行期间使容器保持活动状态,然后停止。

      【讨论】:

      • 我的容器在执行了我在“命令”部分中指定的任何内容后仍会继续运行很长时间。
      【解决方案3】:

      试试这个

      command: supervisord -n && apt-get update && apt-get install yarn
      

      因为 sudo 在 docker 中不起作用。

      【讨论】:

      • 正确。但我试过了,这似乎也失败了。
      【解决方案4】:

      我第一次尝试帮忙:

      你可以试试吗:(我在网上找到的)

      FROM lmm/lamp:php${PHP_VERSION:-71}
      USER root
      RUN apt-get update && apt-get install -y bash
      

      【讨论】:

      • 那行不通。您发布的内容是为 Dockerfile 而不是 docker-compose.yml
      猜你喜欢
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-25
      • 2019-12-11
      • 2020-12-03
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多