如何从Docker组件安装包?

Bla*_*bam 14 package-managers docker docker-compose

嗨,我是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:
Run Code Online (Sandbox Code Playgroud)

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

sudo apt-get update && sudo apt-get install yarn
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何宣布这个,我试过了

command: supervisord -n && sudo apt-get update && sudo apt-get install yarn
Run Code Online (Sandbox Code Playgroud)

它无声地失败了.我该如何正确声明?或者docker-compose.yml是错误的地方吗?

sh4*_*sh4 15

为什么不使用专门为此任务设计的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:
Run Code Online (Sandbox Code Playgroud)

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

FROM lmm/lamp:php${PHP_VERSION:-71}

RUN apt-get update && apt-get install -y bash
Run Code Online (Sandbox Code Playgroud)

您可以使用Dockerfile的RUN(cp,mv,ls,bash ...)添加尽可能多的SO命令,以及其他Dockerfile功能,如ADD,COPY等.

+信息:

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