Docker 컨테이너에서 개발
이 점을 감안하여 나는 일찌감치 node 설치를 피하기로 결정했다.예를 들어 이 컴퓨터의 js.내 경험에 의하면 Node는 버전 충돌로 인해 많은 번거로움을 가져와 악명이 높다.노드 버전 관리자
nvm
는 문제를 완화하기 위해 이렇게 많은 것만 할 수 있는데, 나는 그것이 매우 서투르다는 것을 발견했다.그러니까 됐어, 고마워.응, 그 다음은 스마트팬츠.너는 나에게 요 며칠 왜 nvm를 사용하지 않고 창고 웹 개발을 진행하느냐고 물었다.좋은 질문!정답은 Docker입니다.
I’ve written about Docker in the past 나는 단지 그것을 좋아할 뿐이다.나는 그것이 무엇을 하고 어떤 문제를 해결했는지 이해하는 데 약간의 시간을 들였지만, 일단 내가 해낸다면, 그것은 나의 해결 방안이 되어 일을 통제할 수 있게 되었다. 당신은 프로젝트에 필요한 모든 의존항과 운행할 때의 개발 환경을 격리할 수 있다.만약 당신의 친구가 당신의 프로젝트를 실행하고 싶다면, 그들은 용기를 얻고, 프로젝트는 그들의 컴퓨터에서 실행되며, 로컬에 모든 의존 항목을 설치할 필요가 없다.아름다웠어
그래서 몇 주 전에 저started a new course to learn Gatsby는 제 Docker 개발 환경을 테스트하는 완벽한 장면이었습니다.
개발 환경에 대한 Docker 이미지
내가 한 첫 번째 일은 node로 기초 그림을 만드는 것이다.js와 실용 프로그램을 설치했습니다.다음은 내가 사용한 이미지의 Dockerfile 파일입니다.
주의: 저는 debian을 기초 이미지로 사용하지만, 이미지 크기에 관심이 있으시면alpine
위의 파일에서 저도 평론에서 어떻게 1을 강조했습니다.이미지 및 2를 구성합니다.이미지를 실행하는 두 가지 옵션입니다.이것은 이 이미지를 개발 환경의 용기로 사용하기 시작할 때 필요한 두 가지 절차입니다
이미지 실행 방법 선택
당신이 관심 있는 것은 단지'시발점'이 있을 뿐이거나 원한다면 첫 번째 선택에 따라 하세요.이것은 루트 폴더의 프롬프트에서 용기에 당신을 넣을 것입니다.그리고 다른 설치 명령을 실행할 수 있습니다
이 이미지를 개발 환경으로 사용하려면 두 번째 옵션 docker run
으로 실행하십시오.이 명령은 두 가지 매우 유용한 추가 일을 했다.브라우저에서 항목에 액세스할 수 있도록 컨테이너 포트를 공개합니다(나중에 자세히 설명합니다).컴퓨터의 코드 편집기에서 작성한 코드를 용기 안의 폴더에 비추어 용기가 코드에 대한 변경 사항을 볼 수 있도록 합니다.네, 아주 중요합니다
이 예에 대해 저는 GitHub에서 복제한 저장소가 있습니다. 이것은 Gatsby 응용 프로그램입니다.따라서, 나는 두 번째dockerrun 명령을 실행해서, 내가 정확한 경로를 사용해서 리포
용기 내부
용기에 명령 프롬프트가 있으면 저장소에 저장된 파일package.json
의 위치로 이동해서 실행할 수 있습니다npm install
.이것은 용기에 모든 항목 의존항을 설치합니다
다음은 실행gatsby develop
을 통해 개발 서버를 시작할 수 있습니다
메시지를 받았습니다. 브라우저에서 항목을 볼 수 있습니다.
Local: http://localhost:8000/
그렇게 빨리 하지 마, 내 친구야!
그러나, 내가localhost:8000로 옮겼을 때, 나는 하나를 얻었다ERR_CONNECTION_RESET
.나는 127.0.0.1을 시도했지만 아무것도 얻지 못했다.만약 내가 실행 중인 용기 docker ps
를 열거한다면, 나는 그것이 0.0.0.0에서 실행되는 것을 보았고, 나는 0.0.0.0이 다른 "127.0.0.1"또는 "localhost"를 표시하는 방식이라고 생각한다. 왜 작동하지 않습니까?
└❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8a12a061be10 gatsby "/bin/bash" 10 minutes ago Up 2 minutes 0.0.0.0:8000->8000/tcp my\_project
사실은 용기 안에서 응용 프로그램을 실행할 때 localhost
용기 자체가 아니라 워크스테이션이 아니라는 것을 증명합니다.따라서 용기가 어느 호스트에서 응용 프로그램에 서비스를 제공해야 하는지 알려야 합니다.그러나 컨테이너에 동적 IP 주소가 있으므로 컨테이너에서 사용할 IP 주소를 미리 알 수 없습니다
나 이제 어떡하지?
이 문제를 해결하는 방법은 응용 프로그램에'자리 차지 문자'IP 주소를 제공하는 것이다.0.0.0.0 is that placeholder and it means “all IPV4 addresses in the local machine” . 이 경우
gatsby develop --H 0.0.0.0
지금, 정보가 달라졌어요:
Local: http://localhost:8000/ On Your Network: http://172.17.0.2:8000/
이 두 주소는 현재 모두 나의 프로젝트를 위해 서비스하고 있습니다!
그렇습니다.코드를 변경하고 브라우저에서 변경 사항을 볼 수 있습니다
다른 선택
이VSCode를 편집기로 사용할 경우 현재 "Remote – Containers"라는 확장자가 있습니다. Docker 컨테이너에서 저장소를 열 수 있습니다. (이미지를 만들 필요가 없습니다.) 사용자 UI에서 컨테이너를 관리할 수 있습니다.Docker를 로컬에 설치해야 확장이 가능합니다
주의해야 할 것은 VSCode 관리 포트를 통해 공개하고 이 항목을 테스트로 사용할 수 있다는 것입니다. 저는 제 개발 서버 명령에 호스트를 지정할 필요가 없습니다.확장은 포트를 공개하는 방법을 제공합니다(프로젝트가 실행되는 포트를 선택하고 마우스 오른쪽 단추를 클릭하고 "전송 포트"):
Reference
이 문제에 관하여(Docker 컨테이너에서 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/flaviabastos/developing-inside-a-docker-container-4310텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)