미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트
The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...
저희가 준비한 애플리케이션이 크게 확장된 것을 알게 된 이후, 저는 출시 프로세스를 자동화할 수 있는 완전히 새로운 방법을 찾기로 결정했습니다. 새로운 기능을 개별적으로 활성화할 수 있는 솔루션을 찾는 것이 중요했습니다.
더 간단한 프로세스 자동화 방법을 발견하면 제 업무뿐만 아니라 전체 팀의 업무가 크게 개선될 것입니다. 팀. "도커를 사용하면 어떨까?"라고 생각했습니다.
준비 단계에서 저는 프런트엔드 애플리케이션용 설정과 API용 설정 두 가지를 만들었습니다. 아래에서 개발 과정에서 제가 배운 내용을 프레젠테이션으로 볼 수 있습니다.
컨테이너에 복제된 리포지토리를 갖고 싶어서 Docker파일에서 ADD 명령을 통해 ssh 키를 추가했습니다:
ADD ~/.ssh/testowy
그리고 펑! 파일을 찾을 수 없습니다. 왜 그럴까요?
다음과 같은 폴더 구조가 있다고 가정해 보겠습니다:
docker/
|-- stuff/
|-- test.txt
|-- 도커파일
server/
|-- 데이터
|-- setup.yml
명령 실행 빌드
에서 로그인 대기열
폴더에 있는 파일만 추가할 수 있으며, 로컬 폴더와 그 로컬 하위 폴더(예: stuff)에 있는 파일만 추가할 수 있습니다.
추가하려면 서버
폴더로 이동하면 메시지가 표시됩니다: "컨텍스트를 준비할 수 없음"
이미지 제작에 시간이 오래 걸리는 이유가 궁금한 적이 있나요? 아마도 .dockerignore
를 클릭하여 이미지에 필요하지 않은 파일을 무시할 수 있습니다. 이미지의 .git
폴더와 모든 임시 파일을 자동으로 제거해야 합니다.
Docker는 각 줄을 Docker파일에 저장하고 빌드 후에는 각 줄을 레이어로 저장합니다. 특정 명령의 순서를 너무 자주 변경하지 않는 것이 매우 중요합니다.
FROM 우분투
실행 apt-get install -y 소프트웨어-속성-공통 python
RUN add-apt-repository ppa:chris-lea/node.js
RUN echo "deb http://us.archive.ubuntu.com/ubuntu/ precise universe" >> /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nodejs
RUN apt-get install -y nodejs=0.6.12~dfsg1-1ubuntu1
RUN mkdir /var/www
ADD app.js /var/www/app.js
CMD ["/usr/bin/node", "/var/www/app.js"]
예를 들어 Docker파일의 마지막 줄을 변경하면 마지막 줄이 수정되는 동안 캐시에서 이전 줄이 모두 다운로드됩니다. 4번 줄을 바꾸면 4번 줄부터 마지막 줄까지 모든 줄이 수정됩니다. 따라서 변경되지 않는 명령은 파일의 시작 부분에 배치하는 것이 좋습니다.
주어진 이미지의 용도를 고려하는 것이 좋습니다. 서비스를 한 번 실행하는 데 필요한 이미지라면 코드 콘텐츠를 이미지에 직접 추가할 수 있습니다:
COPY . /workdir
안타깝게도 이렇게 하면 파일을 편집할 수 없으며 코드를 편집할 때마다 이미지를 다시 빌드해야 합니다.
MacOS를 사용 중이고 빌드된 이미지를 개발에 사용하려는 경우 이 문제에 약간 다른 방식으로 접근해야 합니다. 볼륨을 사용할 경우 매우 느린 솔루션이라는 점에 대비해야 합니다(예: 호스트에서 컨테이너로 파일을 복사하는 속도는 4.5MB/s이고 컨테이너 내부에서 복사하는 속도는 10~20배 더 빠릅니다). 다행히도 다음에서 볼 수 있듯이 링크이 문제는 이미 알려진 문제이며, Mac용 Docker를 개발하는 팀의 핵심 과제입니다.
이러한 상황에서 개발에 Docker를 어떻게 사용할 수 있을까요?
외부 서비스(예: Redis/PSQL/Elasticsearch)에 사용하거나 rsync를 제공하는 준비된 솔루션을 사용할 수 있습니다: https://github.com/brikis98/docker-osx-dev
대규모 팀으로 새로운 기능을 테스트하고 싶다면 도커가 이상적인 도구가 될 것입니다! 그럼에도 불구하고 서버의 프로덕션 출시에 사용할 수 있을까요? 아직 완전히 확신하지 못했습니다...
또한 몇 가지 뛰어난 기사를 추천해 드립니다: