您是否会build议如何通过AWS Elasticbeanstalk多容器Docker应用程序上的Dockerfile在我的webroot中安装npm和composer依赖项?
我一直在Docker容器中通过Dockerfile构build我的文件,代码如下:
// Dockerfile ... # npm WORKDIR /var/www/tmp_html RUN mkdir -p npm WORKDIR /var/www/tmp_html/npm COPY php-app/package.json package.json RUN npm update && npm install # composer ... // similar to above # Switch working directory back to webroot WORKDIR /var/www/html
部署后,当我ssh到实例的php:fpm容器,我可以看到以下结构:
root@3f8bf1xc2a78:/var/www# ls html tmp_html
构build的文件在/ tmp_html中,我试图把它们移到/ html。 通过我的Dockerfile像这样:
ONBUILD RUN mv -v ../tmp_html/composer/protected/vendor/* protected/vendor \ && rm -rf ../tmp_html/composer/protected \ && mv -v ../tmp_html/composer/* . \ && mv -v ../tmp_html/npm/* . \ && rm -rf ../tmp_html
问题是,ONBUILD步骤不起作用。 在Docker上检查php:fpm容器,我注意到这个:“OnBuild”:null。 这似乎是build立甚至没有运行。 /html和/tmp_html文件夹中的文件保持不变。
此外,如果我没有使用ONBUILD命令明白地运行命令,在docker上推到docker图像存储库,目标位置不能被检测到,并拒绝让我推,所以我甚至不能部署。 错误是: mv: target 'protected/vendor' is not a directory target'protected mv: target 'protected/vendor' is not a directory我想这是因为elasticbeanstalk没有复制这个包,所以此时html文件夹甚至不可用。
停止临时目录。 将文件复制到需要它们的映像中,然后在构build映像时安装npm模块和作曲模块。
不知道为什么你想要他们在临时文件夹,然后移动他们?