>CMS 튜토리얼 >Word누르다 >WordPress 용 Docker 컨테이너를 수동으로 제작하는 방법

WordPress 용 Docker 컨테이너를 수동으로 제작하는 방법

Lisa Kudrow
Lisa Kudrow원래의
2025-02-17 13:03:101006검색

WordPress 용 Docker 컨테이너를 수동으로 제작하는 방법

나의 이전 기사에서, 우리는 Docker가 무엇인지, 그리고 몇 가지 명령으로 일어나고 달리는 방법을 다루었습니다. 그러나 우리는 아직 유용한 일을하지 않았습니다. Docker를 사용하여 WordPress 환경을 얻는 방법에는 여러 가지가 있습니다.이 기사에서는 WordPress와 함께 Docker 컨테이너를 수동으로 설정하는 방법을 보여 드리겠습니다. Docker에 대한 빠른 소개를 원한다면 여기서 첫 번째 기사로 돌아갈 수 있습니다. 키 테이크 아웃

MySQL 및 WordPress 용 컨테이너를 만들어 WordPress와 함께 작동하도록 수동으로 Docker를 설정할 수 있습니다. MySQL 컨테이너는 Docker Hub의 MySQL 이미지를 사용하여 작성되며 WordPress 컨테이너는 PHP 이미지에서 제작되었습니다. MySQL 컨테이너는 처음 작성할 때 환경 변수를 전달해야하며 루트 사용자의 비밀번호를 설정합니다. 추가 환경 변수는 MySQL_Database와 같은 컨테이너로 전달 될 수도 있습니다. WordPress 컨테이너의 PHP 이미지에는 기본적으로 MySQL 확장자가 설치되어 있지 않습니다. PHP : 5.6-Apache 이미지를 사용하는 Dockerfile을 통해 컨테이너를 구축하여 MySQLI 확장을 설치하고 Apache2-Oferground를 실행하여 고정 될 수 있습니다. 워드 프레스 컨테이너는 데이터베이스가 작동하려면 MySQL 컨테이너와 연결되어야합니다. 이것은 WordPress 컨테이너를 실행할 때 –Link 인수를 사용하여 MySQL 컨테이너의 이름을 첫 번째 부분으로하고 두 번째 부분으로 별칭을 사용하여 수행됩니다. 파일 권한과 WordPress 컨테이너의 IP 주소가 다시 시작될 때마다 변경 될 수 있습니다. 컨테이너 파일 시스템에 대한 쓰기 액세스를 보장하는 Entrypoint.sh 파일을 포함하도록 Dockerfile을 수정하고 '홈'및 '사이트'URL을 서버의로 정의하는 WP-config.php 파일에 라인을 추가하여 Dockerfile을 수정하여 해결할 수 있습니다. IP 주소.

mysql 모든 WordPress 설치에는 MySQL 데이터베이스가 필요합니다. 이렇게하려면 Docker Hub로 가서 MySQL 이미지를 찾습니다.

Docker 팀은 이미 MySQL 이미지를 사용할 준비가되어 있습니다. 터미널에서 명령을 실행하기 전에이 이미지의 설명서를 읽으십시오. 쓰기 시점의 최신 버전은 5.7입니다. 그러나 최신 태그 이름은 5.6입니다. 이미지의 최신 버전은 이전 버전에 대한 것이지만 안정적인 상태에있을 수 있습니다.

이 이미지를 사용하여 컨테이너를 설정하려는 기본 명령은 다음과 같습니다.
  • 이미지 사본이 현지에서 이미지가없는 경우 Docker는 Docker Hub에서이를 당기게됩니다. 우리는 지금까지 -이름이 컨테이너 이름을 제공한다는 것을 알고 있습니다. -D는 컨테이너가 백그라운드에서 실행되는지 확인합니다.
  • Docker PS를 실행하면 WordPressDB 컨테이너가 실행되지 않는 것을 볼 수 있습니다. 그래도 실행 중입니다. Docker Logs WordPressDB를 실행하면 다음과 같은 메시지가 표시됩니다.

    > 왜 그게? 컨테이너를 처음 만들 때 루트 비밀번호를 인수로 전달하지 않았기 때문입니다. 그러니 그렇게합시다. 먼저 Docker RM WordPressDB를 사용하여 WordPressDB라는 이름으로 만든 컨테이너를 삭제해야합니다. 새 컨테이너가 같은 이름을 사용하고 동일한 이름의 컨테이너가있을 수 없기 때문입니다. 그래서 컨테이너를 다시 만들어 봅시다. 컨테이너를 처음 만들 때 환경 변수를 통과해야합니다. 다음과 같이 보일 것입니다 :

docker run --name wordpressdb -d mysql:5.7
-e mysql_root_password = 비밀번호는 환경 변수입니다. 컨테이너가 이미지에서 구축 될 때이 변수를 읽고 루트 사용자의 비밀번호를 지정된 값으로 설정합니다.이 경우 비밀번호입니다.

. 이제 Docker Logs WordPressDB를 확인하면 매우 긴 메시지가 표시되지만 걱정하지 않으면 작동합니다. 다시 Docker PS를 실행하면 활성화되고 실행중인 WordPressDB라는 이름의 컨테이너가 표시됩니다. 다른 환경 변수를 컨테이너로 전달할 수도 있습니다. MySQL 이미지 문서에서 전체 목록을 찾을 수 있습니다. 또 다른 예는 다음과 같습니다.

WordPressDB라는 이름으로 이전 컨테이너를 제거하려고하면 아마도 실패했을 것입니다. 컨테이너가 여전히 백그라운드에서 작동하고 있었기 때문입니다. 먼저 달리는 컨테이너를 중지 한 다음 제거하거나 강제로 제거 할 수 있습니다.

mysql_database를 사용하는 경우 해당 이름의 데이터베이스가 생성되었는지 확인합니다. 이런 식으로, 우리는 데이터베이스 이름과 루츠 비밀번호의 이름이 무엇인지 확실하게 알고 있습니다. 비밀번호와 데이터베이스로 다른 사용자를 만들 수도 있습니다. 다음은 빠른 테스트가 있습니다. 문서를보고 직접 시도해보십시오.

이 컨테이너가 어떻게 제작되는지 더 알고 싶다면 dockerfile을보십시오. Debian Wheezy를 사용하고 Bash 명령을 사용하여 컨테이너를 작성합니다. 저장소에서 가져온 다음 MySQLD를 시작합니다. 이 이미지에서 를 빌드 할 때, 처음으로 빌드 파일의 명령을 실행합니다.
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
>

를 사용하면 컨테이너를 사용하면 mysqld 만 실행합니다

이제 MySQL 컨테이너가 실행되었으므로 WordPress를 실행하는 컨테이너를 실행할 수 있습니다. WordPress 컨테이너 구축 이 컨테이너의 경우 PHP 이미지를 사용합니다. PHP 이미지에는 세 가지 유형이 있습니다. Apache와 함께 제공되는 PHP 이미지 만 필요합니다. <p> -D 옵션이 없으면 백그라운드에서 실행되지 않고 대신 컨테이너가 출력하는 모든 것을 표시합니다 (Docker Logs [Container_Name]과 같은 방식).<put> 출력에서 ​​해당 컨테이너에 IP를 자동으로 할당했음을 알 수 있습니다. 제 경우에는 172.17.0.35입니다. 브라우저를 사용 하여이 주소를 방문하면 금지 된 오류가 발생합니다. 그 이유는 무엇입니까? /var/www/html 폴더 (컨테이너 파일 시스템)에 아무것도 없기 때문에 비어 있습니다. . <can> 그럼 해당 폴더에 파일을 넣을 수있는 방법은 무엇입니까? 기본적으로 해당 폴더는 컨테이너 내부에 머무르며 보이지 않습니다. 그러나 오랫동안 (Docker RM WordPress를 잊지 마십시오). 먼저, 폴더를 만들고 내부를 탐색하십시오 (이전 WordPress 컨테이너를 제거하는 것을 잊지 마십시오). <p> <used> -v는 두 폴더를 매핑하는 데 사용됩니다. 첫 번째 부분은 OS의 폴더이고 두 번째 부분은 컨테이너 파일 시스템의 폴더입니다. UNIX와 같은 시스템에서 "$ PWD"는 명령이 실행될 때 터미널이있는 위치를 반환합니다. 터미널을 처음 시작하면 홈 디렉토리에 있습니다. Windows의 동등한 것은 CD입니다. 이 예에서 첫 번째 부분은 "$ pwd/"이며 로컬 디렉토리이고 두 번째 부분은/var/www/html/입니다. -V는 둘 다 전체 경로가되어야합니다. 그러나 작업 디렉토리를 살펴보면 파일이 없음을 알 수 있습니다. 다음이 포함 된 Index.php라는 파일을 만듭니다 </used></p> <in> 브라우저에서 이것을 다시 확인하십시오. 이번에는 새 컨테이너를 만들었 기 때문에 IP 주소가 변경되었음을 알 수 있습니다. 새 컨테이너를 만들 때마다 IP가 변경됩니다. 브라우저에서 그 메시지가 보이면 모든 것을 올바르게 수행했습니다. <p> <what> WordPress 파일을 거기에 넣으면 어떻게되는지 보자. Docker Stop WordPress를 사용하여 컨테이너를 중지하십시오. WordPress.org에서 WordPress의 최신 사본을 잡고 프로젝트 폴더 내부에 파일을 떨어 뜨립니다. Docker Start WordPress를 사용하여 컨테이너를 다시 시작하십시오. 또한 처음에는 파일을 읽을 수 있어야합니다. *nix 시스템에서 chmod -r 777 projectfolder를 실행할 수 있습니다. 페이지를 다시로드하면 브라우저가 다음을 알려줍니다. </what></p> <pre class="brush:php;toolbar:false"> docker run --name wordpressdb -d mysql:5.7 기본적으로 PHP 이미지에는 MySQL 확장 기능이 설치되어 있지 않지만이를 수정할 수 있습니다. 이번에는 dockerfile을 통해 컨테이너를 만들 것입니다. 우리는 이미 dockerfiles의 작동 방식을 보았습니다. 그들은 기본 이미지에서 구축되었으며 처리를 수행 한 다음 마지막에 하나의 명령을 실행합니다. dockerfile : 라는 새 파일을 만듭니다 우리는 PHP : 5.6-Apache 이미지를 사용하려고합니다

그러면 mysqli 확장자를 설치합니다

다음, PHP 이미지와 마찬가지로 Apache2- Foreground를 실행해야합니다 (결국 MySQL 확장자 만 설치하면 필요합니다).

빌드 파일을 사용하여 이미지를 빌드 할 수 있습니다. 이 이미지를 사용하여 컨테이너를 만듭니다.

error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?
-t는 저장소 이름을 제공하는 데 사용됩니다. . Dockerfile이 위치한 곳에서 Docker에게 알려줍니다. dockerfile이 작업 디렉토리에 위치하고 있습니다. Docker에게 작업 디렉토리에 있다고 말합니다 Docker 이미지로 이미지를 확인하면 이제 태그 최신의 새 이미지가 표시됩니다 (이 이미지의 태그를 지정하지 않았기 때문에). 이제 Php5.6-Apache 이미지와 마찬가지로이 이미지 로이 컨테이너를 제작하십시오.

컨테이너 IP의 브라우저를 확인하면 다음과 같은 내용이 표시됩니다.

당신이 이것을 멀리했다면, 당신은 모든 것을 올바르게 수행했습니다. 이제 WordPress를 데이터베이스와 연결해야합니다. 이것은 유명한 5 분 동안 WordPress의 설치와 더 복잡한 것과는 거리가 멀지 만 장기적으로 Docker의 이점을 볼 수 있습니다.
docker run --name wordpressdb -d mysql:5.7
. 그렇다면 WordPress를 데이터베이스와 어떻게 연결합니까? 먼저 WordPress 컨테이너를 데이터베이스 컨테이너 (WordPressDB)와 연결해야합니다. 이것은 두 컨테이너를 연결하여 수행 할 수 있습니다. 연결에 대한 자세한 내용은 여기에서 찾을 수 있습니다.

새로운 인수는 -link입니다. 첫 번째 부분 WordPressDB는 링크하려는 컨테이너의 이름이며 두 번째 부분 MySQL은 별칭입니다. Docker는 WordPress 컨테이너의 호스트를 수정하고 WordPressDB의 IP를 MySQL로 설정합니다. 따라서 WordPress 구성에 대한 데이터베이스 정보를 작성하면 호스트를 'MySQL'으로 설정합니다. 이제 컨테이너의 IP (새 IP)를 사용하여 브라우저로 이동하십시오. 데이터베이스 정보를 작성하고 관리자 패널에 로그인하십시오. 새 테마를 설치하려고하면 (파일 시스템을 변경하려고 시도 할 것인) 다음과 같은 내용이 표시됩니다. WordPress 용 Docker 컨테이너를 수동으로 제작하는 방법 > 왜 그게? Apache를 실행하는 사용자가 파일 시스템에서 쓰기 액세스가 없기 때문입니다. 이것은 상황이 조금 어려워지는 곳입니다. PhpwithMysQL 이미지의 새 버전을 구축해야합니다. Dockerfile로 가서 다음과 같이 보이도록 수정하십시오 :

.

우리는 아직 EntryPoint.sh 파일을 만들지 않았지만 곧이를 수행 할 것입니다. 컨테이너 내부로 / 내부로 복사합니다. CHMOD 777 /entrypoint.sh는 해당 파일을 실행할 수 있습니다. 마지막으로 EntryPoint는 해당 파일을 실행합니다. 이제 dockerfile과 동일한 디렉토리에서 EntryPoint.sh 파일을 만듭니다.

이것은 공식 WordPress 이미지의 단순화 된 해결 방법이지만 컨테이너 파일 시스템에 대한 글을 쓰는 것이 좋습니다. 이제 새로운 이미지를 만들 수 있습니다 :

오래된 컨테이너를 제거하고 새 컨테이너를 만들어야합니다.
error: database is uninitialized and MYSQL_ROOT_PASSWORD not set
  Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?

또한 이전 wp-config.php 파일을 제거하십시오 이제 브라우저에서 WordPress 컨테이너의 IP를 확인하십시오. 이번에는 테마와 플러그인을 설치하고 컨테이너 파일 시스템을 변경할 수 있습니다. 위의 단계 중 일부는 상당히 비밀스럽고 복잡해 보일 수 있습니다. 그렇기 때문에 다양한 프레임 워크와 언어에 대한 공식 이미지가 있습니다. 모든 프레임 워크 또는 언어에는 작동 방식에 대한 사양이 다릅니다. 기본적으로 Docker는 응용 프로그램이 파일 시스템에 쓸 수 없습니다. 이게 나쁘거나 좋은가요? 좋은 일이라고 생각합니다. 파일 만 보유하는 세 번째 컨테이너를 만들 수 있습니다. 응용 프로그램은 파일을 작성할 수 있습니다. 이런 식으로 우리는보다 모듈 식 아키텍처를 가질 것입니다. 그러나 WordPress와 같은 변경할 수없는 프레임 워크의 경우 해결 방법이 있습니다. 최종 조정

마지막으로해야 할 일은 WordPress 컨테이너를 멈출 때 발생하는 문제를 해결하고 다시 시작하는 것입니다. 문제는 WordPress가 마지막 IP를 '홈'및 '사이트'URL로 저장한다는 것입니다. WordPress 컨테이너를 중지하고 다시 시작하십시오. 이번에는 새로운 IP가 있습니다. 브라우저에서 시도해 보면 이미지, CSS 및 JavaScript 파일이 제대로 포함되지 않음을 알 수 있습니다. 솔루션은 간단합니다.이 라인을 추가하여 WP-config.php를 수정하십시오.

wp-config.php 파일에서 이러한 값을 정의하면 나중에 일반 설정에서 변경할 수 없습니다.

결론 이 기사에서는 WordPress 용 컨테이너를 만드는 방법을 다루었습니다. 우리는 기억하기 어려운 긴 명령으로 다소 비밀스러운 방식으로 해냈습니다. 더 쉬운 방법이 있어야합니다! Docker 팀은 몇 분 안에 쉽게 설정할 수있는 WordPress 이미지를 구축했습니다. 결국, WordPress를 설정하기위한 모든 명령을 기억하고 싶은 사람?

이 시리즈의 다음 기사에서, 나는 공식 WordPress 이미지를 사용하는 방법을 보여주고 Docker Compose를 사용하여 물건을 더 쉽게 만드는 방법을 배우게됩니다. 더 쉬운 방법이 있다면 왜이 기사를 작성 했습니까? 본질적으로, Docker가 어떻게 작동하는지 더 잘 이해하는 것이었고,이를 수행하려면 근본적인 복잡성으로 손을 더럽 힐 수 있습니다. 그것은 개인적인 규칙에 더 가깝기 때문에 내일 Docker를 사용하면 그것이 어떻게 작동하는지와 내 필요에 맞게 조정하는 방법에 대해 더 많이 알게 될 것입니다. 또한 Docker가 무대 뒤에서 어떻게 작동하는지 더 깊이 이해하기를 바랍니다. Docker와 WordPress와 함께 더 재미있는이 시리즈의 세 번째 기사를 계속 지켜봐 주시기 바랍니다. 지금까지 Docker에 대해 어떻게 생각하십니까? 다음 프로젝트에서 고려 하시겠습니까? 아래 의견에 알려주십시오.

WordPress 용 Docker 컨테이너 구축에 대한 자주 묻는 질문 (FAQ) WordPress 용 Docker 컨테이너가 안전한 지 확인하려면 어떻게해야합니까?

보안은 WordPress 용 Docker 컨테이너를 설정할 때 중요한 측면입니다. 컨테이너가 안전한 지 확인하려면 항상 최신 버전의 Docker 및 WordPress를 사용하십시오. 최신 보안 패치를 포함하도록 Docker 이미지 및 컨테이너를 정기적으로 업데이트하십시오. 또한 Docker 비밀을 사용하여 비밀번호와 같은 민감한 데이터를 관리합니다. 컨테이너가 손상되면 Docker 컨테이너를 루트로 실행하지 마십시오. 마지막으로 Docker Security Scanning Tools를 사용하여 이미지에서 취약점을 식별하고 수정하십시오.

WordPress 용 Docker 컨테이너의 성능을 최적화하려면 Docker 컨테이너의 성능을 최적화하려면 어떻게해야합니까? WordPress, 경량 기본 이미지를 사용하는 것을 고려하십시오. 이렇게하면 이미지의 크기가 줄어들고 빌드 프로세스 속도를 높입니다. 또한 Docker의 다단계 빌드는 빌드 타임 및 런타임 종속성을 분리하여 최종 이미지의 크기를 크게 줄일 수 있습니다. 또한 컨테이너가 호스트 시스템에서 사용 가능한 모든 리소스를 소비하지 못하게하는 데 사용할 수있는 리소스 (CPU, 메모리)를 제한합니다.

WordPress 용 Docker 컨테이너의 문제를 어떻게 해결할 수 있습니까?

Docker는 문제 해결을위한 몇 가지 도구를 제공합니다. ‘Docker Logs’명령을 사용하여 실행중인 컨테이너의 로그를보십시오. 컨테이너가 충돌하는 경우 'Docker Despect'명령을 사용하여 컨테이너에 대한 자세한 정보를 얻으십시오. ‘Docker Stats’명령을 사용하여 컨테이너의 리소스 사용량을 모니터링 할 수도 있습니다. 네트워크 문제에 직면 한 경우 'Docker Network Despect'명령을 사용하여 Docker Network를 검사하십시오. Docker 컨테이너에서 실행중인 WordPress 사이트를 백업하려면 어떻게해야합니까?

백업을 백업하십시오. Docker 컨테이너에서 실행되는 WordPress 사이트 'Docker CP'명령을 사용하여 컨테이너에서 호스트 시스템으로 파일을 복사 할 수 있습니다. Docker Volumes를 사용하여 데이터를 유지할 수도 있습니다. MySQL 데이터베이스를 사용하는 경우 'mysqldump'명령을 사용하여 데이터베이스의 백업을 생성 할 수 있습니다.

Docker 컨테이너에서 실행되는 내 WordPress 사이트를 어떻게 확장하려면? 응용 프로그램을 확장하기위한 몇 가지 도구를 제공합니다. Docker Compose를 사용하여 멀티 컨테이너 응용 프로그램을 정의하고 실행하고 컨테이너 인스턴스 수를 늘려서 확장 할 수 있습니다. 또한 여러 호스트에서 컨테이너를 관리하고 확장 할 수있는 오케스트레이션 도구 인 Docker Swarm 또는 Kubernetes를 사용할 수 있습니다.

Docker 컨테이너에 내 WordPress 사이트의 배포를 자동화 할 수 있습니까? . Jenkins, Travis CI 또는 GitHub 동작과 같은 CI/CD 도구를 사용하여 Docker 컨테이너에 WordPress 사이트의 배포를 자동화 할 수 있습니다. 이 도구는 Docker 이미지를 구축하고 테스트를 실행하며 컨테이너를 Docker 호스트 또는 Kubernetes 클러스터에 배포 할 수 있습니다. Docker 컨테이너에서 여러 WordPress 사이트를 관리하려면 어떻게해야합니까?

Docker 컨테이너의 여러 WordPress 사이트를 관리하려면 Docker Compose를 사용하여 각 사이트를 별도의 서비스로 정의 할 수 있습니다. Docker Networks를 사용하여 각 사이트의 네트워크 트래픽을 분리 할 수도 있습니다. Nginx와 같은 역 프록시를 사용하는 경우 도메인 이름을 기반으로 적절한 컨테이너로 트래픽을 라우팅하도록 구성 할 수 있습니다.

Docker 컨테이너에서 실행되는 WordPress 사이트를 어떻게 업데이트 할 수 있습니까?

. Docker 컨테이너에서 실행되는 WordPress 사이트를 업데이트하려면 Docker Hub에서 최신 WordPress 이미지를 가져오고 실행중인 컨테이너를 중지 한 다음 업데이트 된 이미지를 사용하여 새 제품을 시작할 수 있습니다. 업데이트하기 전에 데이터를 백업하는 것을 잊지 마십시오.

Docker 컨테이너에서 실행되는 WordPress 사이트를 모니터링하려면 어떻게해야합니까?

Docker는 컨테이너 모니터링을위한 몇 가지 도구를 제공합니다. 'Docker Stats'명령을 사용하여 컨테이너의 리소스 사용량을 모니터링 할 수 있습니다. Prometheus 및 Grafana와 같은 도구를 사용하여 컨테이너에서 메트릭을 수집하고 시각화 할 수 있습니다.

기존 WordPress 사이트를 Docker 컨테이너로 어떻게 마이그레이션 할 수 있습니까?

기존 WordPress 사이트를 마이그레이션하여 기존 WordPress 사이트를 마이그레이션하십시오. Docker 컨테이너, WordPress 파일 및 데이터베이스를 백업하고 Dockerfile 및 Docker Compose 파일을 만들어 WordPress 및 데이터베이스 서비스를 정의하고 Docker 이미지를 빌드하고 컨테이너를 시작해야합니다. 새 데이터베이스 서비스를 가리키기 위해 WordPress 구성을 업데이트해야합니다.

위 내용은 WordPress 용 Docker 컨테이너를 수동으로 제작하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.