내 CFML/Vue.js 애플리케이션을 위한 CI/CD 워크플로 구축

내 워크플로우



내 프로젝트의 목표는 Docker에서 실행되는 CFML( Lucee ) 및 Vue.js로 작성된 전체 스택 애플리케이션용 CI/CD 워크플로를 만드는 것이었습니다.

CI

다음은 내 CI 워크플로의 간략한 개요입니다.
  • MySQL Docker 이미지를 사용하여 데이터베이스 서비스 시작
  • 내 응용 프로그램에 대한 Docker 이미지 빌드
  • 새로 구축된 Docker 이미지를 실행하고 이를 MySql 데이터베이스 서비스에 연결합니다
  • Testbox을 사용하여 백엔드 API 통합 테스트 실행
  • 실행Cypress 프런트엔드 및 엔드투엔드 테스트

  • CD

    semver 태그를 사용하여 Github 릴리스를 생성하면 내 배포 프로세스가 트리거됩니다. 다음은 일반적인 개요입니다.
  • 다중 플랫폼 Docker 이미지를 빌드합니다. (저는 t4g.micro AWS EC2 인스턴스의 무료 평가판을 활용하고 있으므로 ARM64 아키텍처에서 실행해야 합니다.)
  • semver 태그를 사용하여 Dockerhub에 이미지를 푸시합니다.
  • 서버에 연결하고 Docker 서비스 업데이트를 트리거하여 새 이미지를 풀다운하고 시작합니다.

  • 내가 사용하는 Github 작업

    내 응용 프로그램이 Docker와 함께 실행 중이므로 Docker의 여러 작업을 활용하고 있습니다.

  • docker/setup-buildx-action (Buildx는 다중 플랫폼 이미지 빌드를 허용합니다.)
  • 작업/캐시(buildx를 사용하면 Docker 레이어 캐싱을 사용하여 후속 빌드 속도를 높일 수 있음)

  • docker/build-push-action (이 작업은 이미지를 빌드하고 선택적으로 리포지토리에 푸시합니다.)

  • docker/setup-qemu-action (다른 플랫폼용 이미지 빌드에 필요)

  • docker/login-action (이미지를 푸시할 수 있도록 Dockerhub에 로그인)

  • 제출 카테고리:



    DIY 배포

    Yaml 파일 또는 코드 링크




    jsteinshouer / 영화 목록 앱






    내 영화 앱


    시작하기


    도커 비밀


    개발을 위해 docker-compose가 개발 환경에 대한 데이터베이스 자격 증명을 전달하는 데 사용할 비밀을 생성합니다.
    mkdir secrets
    openssl rand 20 | base64 -w 0 > ./secrets/MYSQL_ROOT_PASSWORD
    openssl rand 20 | base64 -w 0 > ./secrets/MYSQL_PASSWORD
    openssl rand 32 | base64 -w 0 | docker secret create JWT_SECRET -
    echo "mydbuser" > ./secrets/MYSQL_USER
    

    환경 변수


    환경에 대한 .env 파일을 생성합니다.
    cp .env.example .env
    

    OMDB API


    이 응용 프로그램은 Open Movie Database API를 사용합니다. https://www.omdbapi.com/에서 무료 API 키를 등록할 수 있습니다.
    .env 파일에서 OMDB_API_KEY=<yourkeyhere>를 설정합니다.

    Docker Compose를 사용하여 애플리케이션을 실행합니다.

    docker compose up
    

    VS 코드 - 원격 컨테이너


    VS code 원격 컨테이너 확장을 사용하여 애플리케이션을 실행할 수도 있습니다.

    테스트 실행


    Coldbox API 테스트


    이 명령을 사용하여 터미널에서 API 테스트를 실행할 수 있습니다.
    docker exec -it movie-app-api


    View on GitHub

    CI - main.yml

    CD - release.yml

    추가 리소스/정보



    다음은 워크플로우를 설정하는 데 사용한 몇 가지 리소스입니다.
  • https://github.com/metcalfc/docker-action-examples
  • https://github.com/BretFisher
  • https://github.com/Ortus-Solutions/docker-commandbox
  • 좋은 웹페이지 즐겨찾기