docker는 내가 만든 app을 배포해서 실행시키기 위해 필요한 플랫폼이다.
인수인계받은 서비스에 dockerfile이 있었다.
해당 서비스를 실행시키기 위해 dockerfile을 build해서 이미지를 만드는데 build 오류 발생...
하루정도의 삽질 후 매우 간단한 오류인 것을 확인...(현타)
간략하게 docker에 대해 설명하고, docker image, container 등 전반적인 흐름을 정리하고
겪었던 아주,,사소한 이슈 정리하고 마무리하고자 한다.
본문
docker는 아래 공식문서에서 소개하는 글이다.
Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker's methodologies for shipping, testing, and deploying code, you can significantly reduce the delay between writing code and running it in production.
요약하면,, 개발, 배송?(이미지로 와따가따하는 것), 실행(배포)하는 것을 돕는 오픈 플랫폼이다. 개발한 앱을 편리하게 배포할 수 있도록 돕는 플랫폼이다.
docker image는 docker container를 실행하기 위한 명령어들의 모음 template이라고 설명한다.. 나는 편하게 활자라고 이해했다.
이미지를 만들어 놓고 필요한 곳에서 찍어내면 되는 느낌이다. 실행하고 싶은 환경에 가서 이미지(활자)를 통해 앱(글)을 실행(찍어낸다)한다.
dockerfile은 docker image를 커스텀해서 사용할 수 있는데 커스텀 image를 만들때 사용된다. 막말로 아래와 같이 dockerfile에 넣고 빌드하면 실행된다.
RUN echo hello world
아무튼,, 이 글에서 소개할 이슈를 이해하려면 이정도면 충분한 것 같다.
상황에 대해 간단히 다시 보면
인수인계받은 서비스에 dockerfile이 있었다.
해당 서비스를 실행시키기 위해 dockerfile을 build해서 이미지를 만드는데 build 오류 발생...
dockerfile을 자세히 살펴보니... proxy host, port 변수를 설정하는 명령줄이 있었다.
사정상 local 환경에서 build 시키다보니 대수롭지 않게 넘겼는데.. proxy 설정을 제외시키고 build하니까 원인을 알게됐다.
(제외시키지 않으면 빈 문자열이 설정된다고 함)
원인은 dockerfile npm install쪽에서 발생했다.
특정 프록시를 통해 가져와야할 라이브러리가 있었다..
>> 프록시 설정 잘 해주니까,, 빌드가 잘 되었다. 하지만 좀 더 명확한 원인 파악이 필요하다.
이해한게 맞다면 localhost 에서 dockerfile 속 필요한 이미지 및 라이브러리들 접근이 가능하다면 docker build 했을때 문제가 없어야한다.
그렇다면 dockerfile에서 docker proxy 설정하는 이유는 뭐지?빌드 과정에서 외부 리소스 다운하거나 빌드 환경이 프록시 서버 통해서만 인터넷 접근이 가능할 경우 dockerfile 내에 프록시 설정을 한다고 한다. 하지만 현재 상황에서는 localhost에서 build 하기 때문에 큰 상관없다고 판단했다.
>> proxy 설정을 제외했다. 잘된다. ㅎ.ㅎ
그리고,, docker proxy 설정할때는 빌드와 실행 환경으로 구분하는게 좋다고 한다. 그래서 굳이 빌드(dockerfile)에 설정할 필요없고
실행하는 환경에서 변수로 넣어주는 게 좋다고 한다.
마무리
해당 내용을 정리하는 이유는 내부적으로 어떻게 동작하고 실행하는지 알면 좀 더 삽질을 덜하지 않았을까 하는 아쉬움이 남아서이다.
이번 이슈 해결로,, 좀더 docker와 친해진 것으로,, ㅎ.ㅎ
참고
'Cloud Computing > docker' 카테고리의 다른 글
| [Docker] docker history save load (에피소드 글) (0) | 2024.04.08 |
|---|