我正在通过docker-compose.yml
文件运行docker-letsencrypt。它附带PHP。我正试图用PHP composer运行它。我可以通过bash
在容器中安装composer,但是当我重新创建容器时,这不会成功。如何在现有容器中永久安装作曲家,默认情况下不会自动撰写?
我的docker-compose.yml
看起来像这样:
version: "3"
services:
letsencrypt:
image: linuxserver/letsencrypt
container_name: letsencrypt
cap_add:
- NET_ADMIN
ports:
- "80:80"
- "443:443"
environment:
- PUID=1000
- PGID=1000
- EMAIL=<mailadress>
- URL=<tld>
- SUBDOMAINS=<subdomains>
- VALIDATION=http
- TZ=Europe/Paris
volumes:
- /home/ubuntu/letsencrypt:/config
我确实找到了作曲家的单行安装程序:
php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
我可以将此添加到我command
中的docker-compose.yml
,但即使在容器重新启动时也会重新安装作曲家吗?
答案 0 :(得分:3)
您对command
选项的评论是对的,每次启动容器时都会运行。
一种解决方法是创建自己的dockerfile,如下所示:
FROM linuxserver/letsencrypt
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer
(RUN指令仅在构建步骤中运行。)
然后您应该修改docker-compose.yml:
...
build: ./dir
#dir/ is the folder where your Dockerfile resides
#use the dockerfile directive if you use a non-default naming convention
#or if your Dockerfile isn't at the root of your project
container_name: letsencrypt
...