您好,我是 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 。
关于docker - 如何从 Docker compose 安装软件包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47903079/