Docker和PHP:将依赖(作曲家)进入容器中



一点上下文:我是Docker的新手,尚不知道任何最佳实践。我的任务是基于PHP创建一个Web服务,我决定使用Docker-Compose进行配置。

因为我们知道我们都是花哨的开发人员 - 如今,不使用作曲家就无法建立PHP应用程序。

我的问题:

我应该在构建中安装依赖项吗?因此,通过将其添加到我的Dockerfile:

RUN cd /app && composer install --no-interaction --prefer-source --optimize-autoloader

或我应该在开发过程中安装依赖项并构建具有依赖关系的容器图像?


我只知道一种不做的方法:在开发机上本地安装依赖项,然后构建容器。但是"最佳练习"将如何?

和 - 因为我是该领域的新鸟 - 我如何为我的应用服务容器运行"作曲家需要/包装"?

顺便说一句

我还注意到一条消息"不要将作曲家作为根/超级用户!"构建容器时。我在我的env文件中添加了 COMPOSER_ALLOW_SUPERUSER=1(如下所示),但是此消息仍然出现。

是否可以不执行作曲家在Docker容器中以根的安装?我可以忽略该消息吗?

预先感谢菲利普

目前我正在为以下索引工作:

开发环境:

将整个SRC添加为卷:

volumes:
  - .:/app

初始作曲家安装命令

docker-compose exec app composer install

安装新作曲家软件包:

docker-compose exec app composer require some/package

该软件包将通过您的Composer软件包目录中的容器安装(默认情况下为/供应商),可以在IDE中检查源代码,等等。

生产环境:

仅定义为卷的应用程序状态,例如:

volumes:
  - public/uploads:/app/public/uploads

添加/供应商到.dockerignore

和运行作曲家在构建期间安装

RUN cd /app && composer install --no-dev --no-interaction --optimize-autoloader

因此,您将有一个预部构建的图像可以部署,但仍然能够以更敏捷的方式开发。

此解决方案中仍然有两个缺点,也许有人为我提供输入:

1)构建变得有点慢 - 似乎作曲家缓存无法正常工作

解决方案(我不知道在作曲家中是否可以使用)可能是作曲家高速缓存目录的卷。

2)Docker创建的所有软件包均由Root拥有,因此您只能使用Sudo/root Session上的这些文件/文件夹。

我不知道如何正确修复此问题。也许我可以为开发容器的开发用户名创建一个用户,并具有此用户运行命令和php-fpm等。

我仍然是Docker的新手,并为更好的解决方案开放,所以我不会接受此答案。

更新

Dockerfile中的Docker用户中添加新用户。如下

RUN useradd -ms /bin/bash  newuser
USER newuser

如果您想创建家庭用户

WORKDIR /home/newuser

mkdir /home/newuser

如果您想返回root用户,可以做

USER root

a-coin的两侧 -

在构建图像期间做的一个很好的做法,我也与您相同。

我们将从公共存储库中获得最新更新,但硬币的另一面是我们不能确保它们与开发的版本相同。您需要通过在Composer.json中指定精确版本来处理此操作(请勿使用 ^, *)。

相关内容

  • 没有找到相关文章

最新更新