도커 컨테이너 구조 테스트



Docker 컨테이너의 간략한 역사



소프트웨어 개발 초기에 개발자는 테스트 중에 로컬 컴퓨터에서 응용 프로그램을 실행하고 프로덕션 가상 컴퓨터에 배포했습니다.

이 접근 방식의 문제점은 개발 환경에서 작동할 수 있는 일부 종속성이 프로덕션 환경에서 작동하지 않을 수 있다는 것입니다. 따라서 엔지니어의 유명한 대사는 "내 로컬 시스템에서는 작동하지만 생산 환경에서는 작동하지 않습니다!"입니다. 또는 일부 엔지니어의 로컬 시스템에서는 작동하지만 다른 엔지니어에게는 작동하지 않을 수 있습니다. Docker는 이 문제를 해결했습니다.

Docker 컨테이너는 컨테이너화된 환경에서 실행하는 데 필요한 모든 것을 애플리케이션에 제공합니다. 따라서 응용 프로그램이 환경별 시스템 요구 사항에 의존할 필요가 없습니다. 개발 환경에서 실행되는 한 프로덕션 환경에서도 확실히 작동합니다.

Docker의 컨테이너는 이미지에서 스핀업됩니다. 이미지는 미리 구성된 서버 환경과 함께 응용 프로그램을 패키징하는 편리한 방법을 제공합니다. 따라서 Docker 이미지는 패키지이고 컨테이너는 현재 사용 중인 패키지입니다.

Docker 컨테이너 구조 테스트



Docker 이미지에 올바르게 실행하는 데 필요한 모든 파일과 디렉터리가 있는지 확인하고 명령을 올바르게 실행하며 일반적으로 문제가 있는 이미지를 프로덕션에 배포하는 속도를 줄이는 방법이 있다면 어떨까요?

방법이 있습니다! 구글의 컨테이너 구조 테스트가 답입니다. container-structure-test .

다음 명령을 사용하여 애플리케이션의 루트에 src 및 test라는 폴더와 Node js 애플리케이션용 Dockerfile이 있다고 가정해 보겠습니다.

FROM node:14-alpine

# Create app directory

WORKDIR /usr/node-app

ENV PORT=3000

COPY . .

RUN npm install


EXPOSE 3000

ENTRYPOINT ["npm", "run", "start" ]


다음 명령을 사용하여 Docker 이미지를 빌드합니다.

docker build -t my-container-name .


MacO 또는 Linux에 컨테이너 구조 테스트를 설치하려면 다음 명령을 따르십시오.

OS X



양조를 통해 설치:

$ brew install container-structure-test

curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-darwin-amd64 && chmod +x container-structure-test-darwin-amd64 && sudo mv container-structure-test-darwin-amd64 /usr/local/bin/container-structure-test


리눅스




curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64 && chmod +x container-structure-test-linux-amd64 && sudo mv container-structure-test-linux-amd64 /usr/local/bin/container-structure-test


sudo를 사용하지 않으려면 다음을 수행하십시오.

curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64 && chmod +x container-structure-test-linux-amd64 && mkdir -p $HOME/bin && export PATH=$PATH:$HOME/bin && mv container-structure-test-linux-amd64 $HOME/bin/container-structure-test


프로젝트의 루트에 config.yaml이라는 파일을 만듭니다. 해당 파일에 다음을 작성하십시오.

schemaVersion: 2.0.0
metadataTest:
  env:
    - key: PORT
      value: 3000
  exposedPorts: ["3000"]
  # volumes: ["/test"]
  entrypoint: ["npm", "run", "start" ]
  # cmd: ["/bin/bash"]
  workdir: "/usr/node-app"
  # user: "luke"

fileExistenceTests:
  - name: 'src directory exists'
    path: '/usr/node-app/src'
    shouldExist: true
  - name: 'data directory exists'
    path: '/usr/node-app/test'
    shouldExist: true


파일을 저장하고 다음 명령을 실행합니다.

container-structure-test test --image my-container-name \
--config config.yaml


이렇게 하면 성공적인 테스트 출력이 제공됩니다.

축하합니다! 첫 번째 도커 컨테이너 구조를 테스트했습니다! 배포 파이프라인에 추가하거나 테스트 프로세스를 자동화하는 추가 방법을 조사할 수 있습니다. 시간 내 줘서 고마워.

좋은 웹페이지 즐겨찾기