docker - 如何从 Docker compose 安装软件包?

标签 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 是错误的地方?

最佳答案

为什么不使用专为此任务设计的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 的 RUN(cp、mv、ls、bash...)添加任意数量的 SO 命令,除了其他 Dockerfile 功能,如 ADD、COPY 等。

+信息:

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

+现场示例:

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

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

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

关于docker - 如何从 Docker compose 安装软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903079/

相关文章:

php - 如何解决 Uncaught Error : Class 'mysqli' not found

docker - 如何通过简单地从头开始在容器中设置随机 UID 来创建非 root 用户?

node.js - EBUSY : resource busy or locked in Docker when trying to do npm install

python - 查看Docker Swarm命令行输出

python - "-r "在 pip install -r requirements.txt 中做什么

docker - 从 Alpine 图像中捕获 SIGTERM

php - Docker php-fpm 作为 www-data 运行

docker - docker-compose:从docker容器访问localhost

windows - 如何在 Windows 上更新 npm?

Go dep keep package 即使当前没有使用