워드프레스 도커의 php 버전 업데이트 하기.

wordpress

기존에 설치되었던 워드프레스가 6.8.2 버전으로 업데이트 되면서 도커의 php버전이 낮아 호환성 체크에 걸렸다. 그래서 php버전을 업데이트 해야 했다. 우선 기존에 워드프레스를 설치했던 Docker Compose는 다음과 같다.

Old Compose
services:  
  db:  
    image: mariadb:latest  
    command: '--default-authentication-plugin=mysql_native_password'  
    volumes:  
      - db_data:/var/lib/mariadb  
    restart: always  
    environment:  
      - MYSQL_ROOT_PASSWORD=my_password
      - MYSQL_DATABASE=wordpress_db  
      - MYSQL_USER=my_name  
      - MYSQL_PASSWORD=my_password  
    expose:  
      - "3306"  
      - "33060"  
  
  wordpress:  
    image: wordpress:latest
      - wp_data:/var/www/wordpress  
    ports:  
      - "9080:80"  
    restart: always  
    environment:  
      - WORDPRESS_DB_HOST=db  
      - WORDPRESS_DB_USER=my_name  
      - WORDPRESS_DB_PASSWORD=my_password  
      - WORDPRESS_DB_NAME=wordpress_db  
  
volumes:  
  db_data:  
  wp_data:
Bash

여기엔 문제가 좀 많았다. 사실 제대로 된 건 다음과 같다.

New Compose
services:  
  db:  
    image: mariadb:latest  
    command: '--default-authentication-plugin=mysql_native_password'  
    volumes:  
      - db_data:/var/lib/mysql  
    restart: always  
    environment:  
      - MYSQL_ROOT_PASSWORD=my_password
      - MYSQL_DATABASE=wordpress_db  
      - MYSQL_USER=my_name  
      - MYSQL_PASSWORD=my_password  
    expose:  
      - "3306"  
      - "33060"  
  
  wordpress:  
    image: wordpress:latest
      - wp_data:/var/www/html  
    ports:  
      - "9080:80"  
    restart: always  
    environment:  
      - WORDPRESS_DB_HOST=db  
      - WORDPRESS_DB_USER=my_name  
      - WORDPRESS_DB_PASSWORD=my_password  
      - WORDPRESS_DB_NAME=wordpress_db  
  
volumes:  
  db_data:  
  wp_data:
Bash

워드프레스와 데이터베이스의 볼륨 경로가 잘 못 설정되는 바람에 내가 설정한 볼륨은 사용하지 않고 새로 해쉬로 설정된 볼륨을 사용하고 있었던 것이다. 그래서 이 컴포즈를 다시 재실행해서 워드프레스를 업데이트 하면 또 다시 새로운 해쉬 볼륨이 생성되고 매칭되어 기존 데이터가 담긴 볼륨이 매칭되지 않는다. 그리고 이 볼륨을 다시 재연결하기가 매우 귀찮다.

기존 볼륨 데이터를 다시 복사


따라서 일단 기존 해쉬 볼륨의 내용을 명시한 경로로 복사해줘야 한다.

sudo docker run --rm \  
-v hashed_volume_path:/from \  
-v wordpress_wp_data:/to \  
alpine sh -c "cd /from && cp -a . /to"

sudo docker run --rm \  
-v hashed_volume_path:/from \  
-v wordpress_db_data:/to \  
alpine sh -c "cd /from && cp -a . /to"
Bash

이렇게 기존 해쉬 경로의 볼륨에 있던 내용들을 명시한 경로로 복사해주었다.

업데이트


기존 Docker Compose의 내용을 New Compose의 내용으로 다시 갱신해주었다.
나는 포테이너를 사용하므로 Update the stack을 통해 Stack을 업데이트 해주었다.

그런데 워드프레스는 정상적으로 최신 버전으로 다시 설치가 되었는데 여전히 php버전은 낮다.
찾아보니 image: wordpress:latest이 이미지가 높은 버전의 php를 포함하지 않았다.
이미지를 wordpress:6.8.2-php8.3-apache로 변경하여 새롭게 업데이트를 했더니 모두 잘 된다.

최종 Docker Compose는 다음과 같다.

services:  
  db:  
    image: mariadb:latest  
    command: '--default-authentication-plugin=mysql_native_password'  
    volumes:  
      - db_data:/var/lib/mysql  
    restart: always  
    environment:  
      - MYSQL_ROOT_PASSWORD=my_password
      - MYSQL_DATABASE=wordpress_db  
      - MYSQL_USER=my_name  
      - MYSQL_PASSWORD=my_password  
    expose:  
      - "3306"  
      - "33060"  
  
  wordpress:  
    image: wordpress:6.8.2-php8.3-apache
      - wp_data:/var/www/html  
    ports:  
      - "9080:80"  
    restart: always  
    environment:  
      - WORDPRESS_DB_HOST=db  
      - WORDPRESS_DB_USER=my_name  
      - WORDPRESS_DB_PASSWORD=my_password  
      - WORDPRESS_DB_NAME=wordpress_db  
  
volumes:  
  db_data:  
  wp_data:
Bash
0 답글

댓글을 남겨주세요

Want to join the discussion?
Feel free to contribute!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다