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