워드프레스 도커의 php 버전 업데이트 하기.
기존에 설치되었던 워드프레스가 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
댓글을 남겨주세요
Want to join the discussion?Feel free to contribute!