2017-02-27 42 views
0

我想對最新版本的PHP 節點運行我的單元測試,這意味着我需要同時安裝到一個圖像中才能與Bitbucket Pipelines一起使用。如何在Docker中使用多個基礎映像?

我到現在爲止一直在做的是選擇一個或另一個作爲我的基礎,然後手動安裝另一個。例如,我曾與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');" 

有什麼辦法利用PHPNode我的圖像,然後在此基礎之上安裝一些東西(例如作曲家和紗線)?

+2

容器應該很簡單,並且通常做一件事。如果你想使用php和node,只需定義兩個容器並共享一個卷。 –

+0

@MateuszSip仍在學習Docker,但看起來Bitbucket Pipelines不支持這個:https://bitbucket.org/site/master/issues/12757/ability-to-run-multiple-docker-containers所以我不'除了切換CI工具之外,別無選擇,只能構建一個圖像。 – mpen

+1

看起來像Docker尚未提供此功能。查看討論[這裏](https://github.com/docker/docker/pull/12749)和[這裏](https://github.com/docker/docker/issues/3378) –

回答

1

您可以創建一個圖像,並commit,要麼只能在本地機器上通過:從 docker commit <container-id> image-name:tagnamehttps://docs.docker.com/engine/reference/commandline/commit/

然後再使用新的Dockerfile這一形象使用FROM image-name:tagname

一切,你會增加新的Dockerfile將堆疊在您使用PHP和Node.js創建的圖像之上

有時,您可以創建幾層圖像,這些圖層將通過不同的進程和功能。非常好的參考是:https://hub.docker.com/u/million12/

因此,您可以使用PHP創建基礎映像,然後使用安裝了Node.js的另一個PHP映像創建基礎映像,然後使用其他作曲程序創建基礎映像。

如果您希望您的圖片從本地計算機導出你應該碼頭工人樞紐和出口,或替代服務像quay.io

希望這回答了你的問題登記。

+0

所以....我仍然需要手動安裝Node或PHP?我不能用於預建圖像? – mpen

+0

如果您會找到滿足您需求的圖像,請使用它。看看github回購看看如何創建圖像。但在某些時候,如果您需要自定義圖像,則必須自行構建,或者使用一些公共圖像作爲第一個基礎圖像,但接下來的所有圖像都必須來自您自己的自定義圖像。 –

相關問題