도커 컨테이너 내부에서 PHP 업그레이드

도커 컨테이너 내부에서 PHP 업그레이드

그래서 다음과 같이 PHP 7.2.34 서비스를 실행하는 도커 컨테이너가 있습니다.

docker-compose.yml

version: '3'
services:

 #PHP Service
 app:
  build:
   context: .
   dockerfile: Dockerfile
  image: digitalocean.com/php
  container_name: app
  ...

도커파일

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으나 PHP 버전에 변화가 없다고 보고되었습니다 FROM php:7.4-fpm. phpinfo()예: image: digitalocean.com/php업그레이드할 필요가 있나요?

답변1

이 명령은 이미지를 업데이트하고 컨테이너를 강제 중지한 후 다시 생성합니다.

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

확인 목적으로 docker exec -it app php -vPHP 버전 정보가 반환됩니다.

# 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 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이 파일

관련 정보