如何从Docker组件安装包?

时间:2017-12-20 09:48:38

标签: docker docker-compose package-managers

您好,我是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是错误的地方吗?

4 个答案:

答案 0 :(得分:10)

为什么不使用专门为此任务设计的 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-compose入口点属性链接到docker-compose.yml文件的入口点bash脚本来启动yarn。

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

试试这个

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

因为sudo在docker中不起作用。

答案 3 :(得分:0)

我第一次尝试提供帮助:

您会尝试一下吗((我在网上发现了它)

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