在 docker 容器内升级 PHP

在 docker 容器内升级 PHP

所以我有一个运行 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-fpmFROM php:7.4-fpmphpinfo()报告 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 lsdocker container ls

重建镜像并创建容器运行

docker-compose up -d --build

答案3

由于您无论如何都要停止应用程序,因此您可以使用以下命令从主机中删除所有图像:

docker-compose down --rmi all

然后按照@Shmuel的建议启动应用程序并重新创建容器

docker-compose up -d --force-recreate --build

答案4

例如,更改目标版本的 Dockerfile

FROM php:7.4-fpm

或者

FROM php:8.0-fpm

然后你调整你的图书馆这个文件对于 7.xxx

或 7.xxx 至 8.xxx这个文件

相关内容