• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

php 실습 관련

22.01.29 22:17 작성 조회수 189

1

수업에서 배운 내용만으로는 실습 이해가 잘 안되어서 문의드립니다. 답안에서 

$ docker run --rm \

  -v $(pwd)/hello.php:/app/hello.php \

  php:7 \

  php /app/hello.php

라고 써주셨는데, 각 부분이 담당하는 의미? 기능을 설명해주실 수 있으신가요?  잘 이해가 가지 않습니다.

 

$(pwd)/hello.php  = 이 부분은 제 로컬 컴퓨터에 만들어놓은 php 파일을 의미하는 것이겠죠..?

:/app/hello.php   = 이 부분은 구체적으로 무엇을 의미하는 것인가요?

  php:7  = 이것은 php:7 이미지를 사용한다는 뜻인가요..?

  php /app/hello.php  =  이 부분은 왜 다시 나오는건지도 잘 이해가 가지 않습니다;

 

 

그리고 답안대로 작성하면

/usr/local/bin/docker-php-entrypoint: 9: exec: php/app/hello.php: not found

이라는 에러가 뜨는데 이건 무슨 뜻이죠?

 

답변 2

·

답변을 작성해보세요.

1

nathan님의 프로필

nathan

질문자

2022.02.03

윈도우와 맥이 파일경로를 구분하는 기호가 다른가요?

구분기호를 뭘로 입력해야 하는지 문의드립니다.

 

docker run --rm -v C:\Users\USER\docker_beginner\hello.php:\app\hello.php php:7 php \app\hello.php

docker run --rm -v C:\Users\USER\docker_beginner\hello.php:/app/hello.php php:7 php /app/hello.php

 

위의 두개를 모두 입력해봤는데, 굉장히 긴 PHP license 에 관한 오류? 메시지가 떴습니다.

이건 어떻게 해결을 하나요..?

안녕하세요.

PHP의 실습 결과는 php 정보를 출력하는 것이고 위 스샷에 올려주신 내용이 정확하게 원하는 내용입니다. (오류가 아닙니다!)

정상적으로 php가 원하는 파일을 실행한 것을 볼 수 있습니다.

docker는 리눅스 기반이기 때문에 "/"를 사용하는 것이 맞고 윈도우에서 -v 옵션으로 파일을 연결하는 경우만 "\"를 사용합니다.

감사합니다!

1

안녕하세요!

문의 주신 내용은 도커 명령어를 이해하는데 굉장히 중요한 부분입니다. 하나씩 설명 드리겠습니다.

$(pwd)/hello.php - 로컬 컴퓨터에 만들어 놓은 php 경로입니다. 앞에 $(pwd)가 특이해 보이는데 pwd는 현재 경로를 알려주는 명령어로 실제로는 /Users/subicura/workspace/sample/hello.php 처럼 전체 경로를 입력해야 하지만 매번 입력하기 번거로우므로 pwd 명령어를 사용합니다. 윈도우나 특정한 환경에서는 pwd 명령어가 제대로 지원되지 않을 수 있으므로 $(pwd)대신 전체 경로를 입력해야 할 수 있습니다.

:/app/hello.php - 위에서 입력한 로컬 경로를 컨테이너 내부에 연결해줍니다. 실제 컨테이너 내부엔 내가 작성한 파일이 없지만 외부 파일을 연결하고 싶을 때 사용합니다. 따라서 컨테이너 내부의 /app/hello.php 파일은 실제 외부에서 작성한 파일을 가리킵니다.

php:7 - php 이미지의 7 tag를 사용한다는 의미입니다. php 7 버전을 7tag로 사용하기 때문에 7버전이 맞습니다.

마지막으로 입력한 php /app/hello.php 는 컨테이너에서 실행할 명령어 입니다. php:7 컨테이너를 실행하면 무언가 명령어를 실행해야겠죠? 마지막에 아무 값도 입력하지 않는다면 도커 이미지에 설정된 기본 명령어가 실행되고 무언가를 입력하면 기본 명령어 대신 내가 입력한 명령어가 실행됩니다. php 명령어를 이용하여 /app/hello.php를 실행하겠다는 의미입니다.

 

에러가 뜨는 경우는 맨 위에 내용처럼 $(pwd)가 동작하지 않았을 수 있습니다. $(pwd)대신 실제 경로를 입력해보시겠어요?

윈도우라면 C:\xxxxxx\xxxxxx\hello.php 를 입력해보시면 됩니다.

 

감사합니다!