gpt4 book ai didi

docker - 在现有的Docker镜像中安装PHP Composer

转载 作者:行者123 更新时间:2023-12-02 18:15:11 25 4
gpt4 key购买 nike

我正在通过docker-compose.yml文件运行docker-letsencrypt。它随PHP一起提供。我正在尝试使用它运行PHP composer。我可以通过bash在容器中安装composer,但是当我重新创建容器时,它不会消失。如何在默认情况下不包含compose的现有容器中永久安装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

我确实找到了 Composer 的一站式安装程序:
php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer

我可以将它添加到 command中的 docker-compose.yml中,但是即使在容器重启时也可以重新安装composer吧?

最佳答案

您对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
...

关于docker - 在现有的Docker镜像中安装PHP Composer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com