所以我有一个运行 PHP 7.2.34 服务的 docker 容器,如下所示:-
docker-compose.yml
version: '3'
services:
#PHP Service
app:
build:
context: .
dockerfile: Dockerfile
image: digitalocean.com/php
container_name: app
...
Dockerfile
FROM php:7.2-fpm
...
我没有重新启动 Nginx,而是简单地重新启动容器,例如:-
docker stop app db webserver
docker rm app db webserver
docker-compose up -d
我想升级到 PHP 7.4+ 甚至 8。我尝试简单地替换FROM php:7.2-fpm
为FROM php:7.4-fpm
但phpinfo()
报告 PHP 版本没有变化?是否:image: digitalocean.com/php
升级时有什么意义吗?
答案1
此命令将更新您的映像并强制停止并重新创建容器:
docker-compose up -d --force-recreate --build
为了验证运行,docker exec -it app php -v
这将返回 php 版本信息。
# The new image name when running `docker-compose up/build`
image: digitalocean.com/php
解释:
该命令docker-compose up
将构建一个不存在的图像。
要强制构建新图像,请添加--build
标志或执行操作docker-compose build
,然后docker-compose up
如果您想强制 Compose 停止并重新创建所有容器,请使用该
--force-recreate
标志。
--build
在启动容器之前构建镜像。
答案2
docker 镜像和 docker 容器之间存在差异。
参见docker image ls
和docker container ls
。
重建镜像并创建容器运行
docker-compose up -d --build
答案3
由于您无论如何都要停止应用程序,因此您可以使用以下命令从主机中删除所有图像:
docker-compose down --rmi all
然后按照@Shmuel的建议启动应用程序并重新创建容器
docker-compose up -d --force-recreate --build