如何在Docker中使用多个基本映像?

时间:2017-02-27 02:29:40

标签: docker docker-compose

我想针对最新版本的PHP 节点运行我的单元测试,这意味着我需要将它们安装到一个图像中才能使用Bitbucket Pipelines

到目前为止,我一直在做的是选择一个或另一个作为我的基础,然后手动安装另一个。例如,我已经开始使用php:5.6-fpm作为我的基础,然后安装了Node:

# Dockerfile
FROM php:5.6-fpm

RUN docker-php-ext-install bcmath
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install -y git mercurial unzip nodejs
RUN npm set progress=false
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN php -r "unlink('composer-setup.php');"

有没有办法将 PHPNode用于我的图片,然后安装一些东西(例如Composer and Yarn)?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式在您的计算机上本地创建图像并commitdocker commit <container-id> image-name:tagname 来自:https://docs.docker.com/engine/reference/commandline/commit/

然后使用FROM image-name:tagname

在新的Dockerfile中使用此图像

您将添加到新Dockerfile的所有内容都将堆叠在您使用PHP和Node.js创建的图像之上

有时您可以创建多个图像层,这些图像将以不同的流程和功能进行。非常好的参考是:https://hub.docker.com/u/million12/

因此,您可以使用PHP创建基本映像,然后使用安装了Node.js的PHP映像创建基本映像,然后使用编写器创建另一个。

如果您希望从本地计算机导出图像,则应在docker hub上注册并导出到该版本或其他服务,如quay.io

希望能回答你的问题。