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

我想运行我的unit testing对付最新版本的PHP 节点,这意味着我需要安装到一个图像,以使其与Bitbucketpipe道工作。

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

 # 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');" 

有什么办法可以同时使用PHP和Node来创build图片,然后在其上安装一些东西(比如Composer和Yarn)?

您可以创build一个映像,并通过以下方式在本地机器上进行docker commit <container-id> image-name:tagnamedocker commit <container-id> image-name:tagname from: https : //docs.docker.com/engine/reference/commandline/commit/

那么稍后使用FROM image-name:tagname在新的Dockerfile中使用此映像

您将添加到新的Dockerfile中的所有内容都将堆叠在您使用PHP和Node.js创build的映像的顶部

有时候,你可以创build几层图像,这些图层将随着不同的stream程和function而进步。 非常好的参考是: https : //hub.docker.com/u/million12/

所以你可以用PHP创build一个基本的图像,然后使用安装了Node.js的PHP图像,然后用composer创build另一个。

如果你想从你的本地机器导出你的图像,你应该在docker集线器上注册并导出到它或替代服务,如quay.io

希望能回答你的问题。