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

我正在尝试使用 docker 映像,它根据我的使用方式显示不同的行为。


该图像是https://hub.docker.com/r/chriszarate/wordpress-phpunit/


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


用法 1 - 本地构建


克隆存储库

跑步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 中使用它


我的 docker-compose.yml

version: "3"


services:

  wordpress_phpunit:

    image: "chriszarate/wordpress-phpunit"


跑步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


我查看了 Docker 中心,它具有 git 存储库中的最新更改。


我在这里错过了什么吗?


缥缈止盈
浏览 135回答 1
1回答

桃花长相依

所以这就是可能发生的情况:docker镜像phpunit-docker/6.0.6最初被构建并推送到 docker 存储库。当时,PHP 7 的版本为 7.1.5,因此 Dockerfile将该版本构建到映像中。chriszarate/wordpress-phpunit然后构建了 docker 镜像。由于它基于phpunit-docker/6.0.6,因此生成的图像内置了 PHP 7.1.5 。一段时间后,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。请注意,可能还有其他解释。不过,这似乎很合理。
打开App,查看更多内容
随时随地看视频慕课网APP