파일 권한과 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 : 라는 새 파일을 만듭니다