Docker : Dockerfile Build

    들어가기 전

    $ docker build --tag test:test .

    Dockerfile을 위 명령어로 build 할 때 문제가 발생함.

    Dockerfile과 동일한 폴더에 파일이 존재하거나 혹은 참조(SymLink)로 된 녀석들인데 복사가 되지 않는 경우가 발생했다. 이런 경우는 뭐가 문제가 어떻게 해결해야할까?

     

    문제점

    • Docker의 Image를 Build하려면 Dockerfile과 Context가 필요하다.
    • Dockerfile의 COPY 지시자는 Context를 참조한다.

    위 코드의 문제점은 Context의 위치가 잘못 지정되어 있어서 COPY 지시자가 Context를 찾아올 수 없다는 것이다. 

     

    Context의 위치

    microservice
    ㄴ game
        ㄴ Dockerfile
    ㄴ ...

    Context의 위치는 Dockerfile을 build 했을 때 전달한 경로가 된다. 예를 들어 위와 같은 구조가 있다고 가정해보자.

    • microservice에서 docker build . 명령어를 이용했으면 context는 microservice가 된다. 

    컨텍스트는 이런 메카니즘으로 동작한다. 

     

    Docker Build의 의미

    $ docker build -f <DockerFile> <Context 경로>
    
    # 예시
    $ docker build -f ./docker/hello/Dockerfile .

    앞서 이야기 했을 때 이미지를 빌드하기 위해서는 Dockerfile과 Context가 필요하다고 했다. 그 의미를 살리면 다음과 같을 것이다. 위의 내용대로 하면 컨텍스트가 기본 경로가 되는데, 컨텍스트 자체에는 DockerFile이 없기 때문에 Context 경로를 기준으로 DockerFile의 경로를 알려주는 형식으로 작성할 수 있다. 

     

    그렇다면 파일은 어떻게?

    • 파일의 위치를 Context 기준으로 DockerFile에 알려준다.
    • 파일을 모두 DockerFile에 옮기고, Context의 위치를 DockerFile로 옮긴다.

    위 두 가지의 방법으로 대응할 수 있을 것이다.

     

    출처 및 참고 

    https://bgpark.tistory.com/132

    'Dev-Ops > Docker' 카테고리의 다른 글

    Docker란 무엇인가?  (0) 2022.07.30

    댓글

    Designed by JB FACTORY