如何从Docker安装软件包?

您好,我是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包pipe理器:

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

我无法弄清楚如何声明这一点,我试过了

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

这失败了。 我如何正确地声明这个? 或者是docker-compose.yml这个错误的地方?

尝试这个

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

因为sudo在docker中不起作用。

为什么不使用专门为此任务devise的Dockerfile呢?

将你的“image”属性改为“build”属性来链接一个Dockerfile。

您的docker-compose.yml将如下所示:

 services: lmm-website: build: 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的相同path中创build一个名为Dockerfile的文本文件,内容如下:

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

你可以使用Dockerfile的RUN(cp,mv,ls,bash …)添加尽可能多的SO命令,除了像ADD,COPY等其他的Dockerfilefunction。

+信息:

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

+活例子:

我做了一个叫做hello-docker-react的github项目。 因为它的名字是一个docker反应盒,可以作为一个例子,因为我正在安装纱线加上其他工具使用我上面解释的过程。 一世

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

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