docker compose 및 VScode 개발 환경 사용 - 섹션 2
5414 단어 vscodedevelopersdocker
docker compose 기반의 환경을 방금 배치했는데 코드가 없고 볼륨이 하나밖에 없다는 것을 기억하십시오.
선결 조건:
ms-vscode-remote.remote-containers
1단계: 컨테이너에 VS 코드로 연결
대부분의 힘든 일을 다 끝냈다.원격 용기 확장을 사용하여 웹api 용기에 연결합니다.이렇게 하려면
F1
부터 시작하여 Attach to Running Container
를 입력합니다.이 옵션을 선택하면 실행 중인 용기 목록을 볼 수 있습니다.이름에 webapi
중 하나를 선택합니다.내 설정에는 다음과 같은 것이 있다. my-dev-env-webapi-1
약간의 설치 및 준비 후에 VS 코드가 시작됩니다.폴더/usr/src/app
를 엽니다.이것은 우리가 설치한 webapi-code
볼륨의 위치다.현재 컨테이너 내에서 작업 중입니다.현재, VS 코드에서 터미널을 시작할 때, 터미널은 이미 용기에서 실행됩니다.힌트는 알려줄 거예요.
터미널에서 다음 명령을 실행합니다.
cd /usr/src/app
git clone https://github.com/navneetkarnani/nodejs-db-test
cd nodejs-db-test
npm install
이것은 내가 상기 데이터베이스에 연결하기 위해 작성한 코드를 서명할 것입니다. 만약 서명할 수 없다면 실패할 것입니다.테스트하려면 다음 명령을 실행합니다.npm start
환경 변수인 MONGO DB가 정의되지 않은 실패를 보게 됩니다.환경 업데이트
우리는 우리의 응용 프로그램이 생산 환경에서 이 점을 볼 수 있다는 것을 안다. 이것이 바로 응용 프로그램이 사용할 수 없으면 실패하는 이유이다.따라서 우리는 우리의 운행을 갱신할 때 이러한 기능을 가지게 하고 가능한 한 생산 환경에 접근하도록 한다.
우리는 창문을 닫을 수 있다.그리고 부두 일꾼에게 돌아가자.암린
my-dev-env
.웹api의 서비스 부분에서 응용 프로그램이 원하는 환경 변수를 추가합니다.전체 웹api 섹션은 다음과 같습니다.
webapi:
image: node:lts
environment:
- MONGO_DB=mongodb://mongo:27017/test
volumes:
- webapi-code:/usr/src/app
- webapi-root:/root
command: ["/bin/bash", "-c", "--", "while true; do sleep 86400; done"]
우리가 추가한 추가 environment
부분에 주의하십시오.MONGO_DB
포트mongo
에 있는 27017
호스트를 가리킵니다.이름mongo
은 데이터베이스에 있는 docker compose 파일에서 사용하는 서비스의 이름으로 해석됩니다.만약 네가 다른 이름을 가지고 있다면 반드시 같은 이름으로 바꾸어야 한다.Docker는 내부에서 DNS 검색을 수행하므로 응용 프로그램에서 IP 주소를 알 필요가 없습니다.호스트 (docker가 실행하는 기계) 에서 이 문제를 해결하려고 하면 해결할 수 없습니다.이 데이터베이스에 연결할 수 없습니다. 용기 내부에서 외부 세계를 위한 포트를 열지 않았기 때문입니다.모든 것이 안전하다.
구성 테스트
그런 다음
docker-compose up -d
명령을 반환하고 실행합니다.콘솔은 다음과 같이 표시되어야 합니다.
Recreating my-dev-env_webapi_1 ... done
my-dev-env_mongo_1 is up-to-date
이전과 같이 '실행 중인 용기에 추가' 동작을 사용하여 용기에 다시 추가합니다.VS 코드 윈도우의 왼쪽 아래에 있는 녹색 작은 버튼을 바로 가기로 사용할 수도 있습니다.VS 코드에서 터미널을 시작하고 다음을 수행합니다.
cd /usr/src/app/nodejs-db-test
npm start
너는 반드시 보아야 한다.> [email protected] start /usr/src/app/nodejs-db-test
> node ./bin/www
Connected to database
여러 개의 인코딩 용기?정말 선진적이다!!
그래서 여러 용기에서 인코딩을 하려면 쉽게 확장할 수 있다.볼륨 마운트가 고유/적절한지 확인합니다.예를 들어, NodeJ에서 실행되는
auth-server
라는 서비스를 추가하고 싶습니다.webapi
섹션만 복제하고 적절하게 변경하면 됩니다.VS 코드에 있어서 당신은 작은 부분의 절차를 기억해야 합니다.왜?기본적으로 원격 컨테이너 확장은 사용된 이미지에 따라 VS 코드 설정을 유지합니다.그리고 만약 여러 용기가 같은 이미지를 가지고 있다면, 어떤 일이 일어났는지 알 수 없을 뿐만 아니라, 사물이 서로 덮어쓰는 것만 계속 볼 수 있을 것이다.
문서를 대량으로 검색한 후에 원격 용기에서 같은
devcontainer
파일을 만들었지만 자동으로 만들어졌고 이미지 이름으로 연결되었습니다.문서가 여기 있어서 명확하지 않다.이거 봐요. Named Containers
다음은 운영체제에 따라 결과가 달라질 수 있도록 제 절차입니다.MacOS에 있기 때문에 전역 설정은
~/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-containers
아래에 있습니다.용기에 연결할 때, 설정은 imageConfigs
디렉터리에서 만들어집니다.모든 dev 용기에 같은 (노드: lts) 를 사용하지만, 서명/단점 등에 사용되는 디렉터리가 다르기 때문에, 용기 이름을 파일 이름으로 복사해야 합니다.나는 가용성 개선을 얻기 위해 신청서 Issue on Github 를 제출했다.그러니까 돌아와.다음은 노트북에서 실행하는 단계입니다.
cd ~/Library/Application\ Support/Code/User/globalStorage/ms-vscode-remote.remote-containers
cd nameConfig
cp ../imageConfigs/node%3alts.json my-dev-env_webapi_1.json
요컨대
이 두 문장에서, 우리는 로컬 저장 코드가 필요 없이 하나의 용기에서 작업할 수 있도록 docker compose 파일을 만들었다.
용기와 관련 기술이 성숙됨에 따라 새로운 용례가 낡은 용례를 대체할 것이다. 이것은 VNC를 기반으로 하는 환경을 운행하는 것과 서버와 클라이언트에서 부하를 분담하는 것 사이의 커다란 혼합이다.그 밖에 개발 환경이 생산 환경에 더욱 가까워질 수 있다는 추가적인 장점도 있다.
이는 원격 docker 호스트에서 개발하는 등 흥미로운 작업 흐름을 실현할 수 있으며, 데이터 센터나 디지털 오션Referral Link에서 응용 프로그램의 메모리 수요가 개발자 노트북의 사용 가능한 메모리 수요보다 클 수 있다.
본문은 최초로 발표되었다. https://blog.mandraketech.in/dev-env-using-docker-compose-and-vscode-part-2
Reference
이 문제에 관하여(docker compose 및 VScode 개발 환경 사용 - 섹션 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mandraketech/dev-env-using-docker-compose-and-vscode-part-2-1cem텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)