Docker映像构建了不同版本的应用程序

时间:2020-07-25 07:26:49

标签: php docker docker-compose

我正在尝试使用docker映像,并且根据我的使用方式,它表现出不同的行为。

图片为https://hub.docker.com/r/chriszarate/wordpress-phpunit/

Github是https://github.com/chriszarate/wordpress-phpunit

用法1-在本地构建

  1. 克隆存储库
  2. 运行docker-compose -f docker-compose.yml run --rm wordpress_phpunit php -v

输出:

PHP 7.2.10 (cli) (built: Sep 17 2018 09:23:43) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.10, Copyright (c) 1999-2018, by Zend Technologies
    with Xdebug v2.6.1, Copyright (c) 2002-2018, by Derick Rethans

用法2-在我的docker-compose.yml中使用它

  1. 我的docker-compose.yml
version: "3"

services:
  wordpress_phpunit:
    image: "chriszarate/wordpress-phpunit"

  1. 运行Run docker-compose -f docker-compose.yml run --rm wordpress_phpunit php -v

输出:

PHP 7.1.5 (cli) (built: May 13 2017 10:49:18) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
    with Zend OPcache v7.1.5, Copyright (c) 1999-2017, by Zend Technologies
    with Xdebug v2.5.3, Copyright (c) 2002-2017, by Derick Rethans

请注意,用法1 安装 PHP 7.2.10 ,而用法2 安装 PHP 7.1.5 < / p>

我看过Docker集线器,它具有git存储库中的最新更改。

我在这里想念东西吗?

1 个答案:

答案 0 :(得分:1)

这就是可能发生的事情:

  1. phpunit-docker/6.0.6码头工人镜像最初是构建并推送到码头仓库中的。那时,PHP 7的版本为7.1.5,因此Dockerfile将该版本内置到映像中。

  2. 然后构建了chriszarate/wordpress-phpunit泊坞窗映像。由于它基于phpunit-docker/6.0.6,因此生成的映像已内置了PHP 7.1.5。

  3. 然后,过一段时间,phpunit-docker/6.0.6被构建并再次推送到docker存储库。除非这次,PHP 7的版本为7.2.10。这绝对是奇怪的,但是也许应该不会发生。

因此,在这种情况下:

  • 如果您docker pull chriszarate/wordpress-phpunit,您将获得PHP 7.1.5,因为它已内置在Docker存储库中存储的映像中,
  • 如果您git pull与其相应的项目相反,然后然后在本地构建,则它将基于最新的phpunit-docker/6.0.6映像,因此运行PHP 7.2.10。

请注意,可能还有其他解释。不过,这似乎足够合理。