Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dev: docker image build #422

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open

Conversation

NavyStack
Copy link

@NavyStack NavyStack commented Jan 30, 2024

PR Checklist

PR이 다음 요구 사항을 충족하는지 확인하세요. PR을 보내기 전에 모든 항목을 확인해야 합니다.

PR 유형

어떤 유형의 PR인가요? (해당 항목에 모두 체크해주세요)

  • 버그 수정
  • 새로운 기능
  • 문서내용 수정
  • 코드 의미에 영향을 주지 않는 변경사항 (오타, 서식 지정, 변수명 변경 등)
  • 코드 리팩토링 (버그 수정이나 기능 변경 없는 코드 변경)
  • 빌드 관련 변경
  • 테스트 코드 추가
  • 기타 (이유를 설명해주세요.)
  • Docker 이미지 관련 docker-compose-dev.yml 추가로 배포 자동화 가능
  • Unit testing 등 진행 가능.

변경 사항


구분 기존 변경 기타
USER root (UID 0 : GID 0) g6 (UID 1000 : GID 1000) 잠재적인 권한 오류 및 보안 위험 방지
Mount Target /app /g6/data
dockerfile meta n/a expose 8000
init bash tini see krallin/tini#8
Python navtive venv

docker compose 명령은 아래와 같음

docker compose -f docker-compose-dev.yml up -d

명세된 대로 Full.Dockerfile로 빌드를 시도함.


  1. 기존 도커파일, 도커 컴포즈를 이용해 로컬 실행시간을 최소화 #343 에서 docker-compose.yml을 제거함
  2. 아직 semver 태그가 붙지 않았고, 전반적인 프로젝트 상황을 고려하여 docker-compose-dev.yml로 명명
  3. base 이미지를 사용하는 방식은 테스트를 위해서 이미 빌드한 ghcr.io/navystack/gnuboard-g6:base-nightly 를 사용함
    https://github.com/NavyStack/gnuboard-g6/actions/runs/7609935278 에서 볼수 있듯, 전체를 빌드하면 빌드 시간이 상당함.
  4. 업데이트 마다 전체 빌드를 시도하는 것은 비효율적임.
  5. 관련 모든 로그는 https://github.com/NavyStack/gnuboard-g6.git 에서 확인가능함.

관련 이슈


기타 정보

  • Venv도 있고, Docker에서 공식적으로 권장하지 않지만, 수동으로 컨테이너 안에서 python 사용 가능.

  • 현재, 관련 의존성에 컴파일 과정이 필요함. 따라서 Qemu를 사용하여 컴파일을 시도하는 경우, 오류 발생 가능성이 있음.

  • 따라서 docker node를 append 하여 각각 amd 노드 (github runner), arm64 노드, arm 노드 통 3개의 노드를 사용중임.

  • arm 관련 인스턴스가 없는 경우, Qemu를 사용해서 github actions로 빌드해야하는데, 빌드의 소요 시간 및 이와 관련된 잠재적 오류 가능성 등 trade off는 고려가 필요함.

  • 그래서 base 이미지를 두는 방식으로 전개함.

  • alpine 베이스 이미지도 이미 있음. 그러나 빌드 시간 및, GCC 등의 오류 가능성 문제로 권장하지는 않음.

docker pull navystack/gnuboard-g6:alpine-nightly
  • dotenv와 관련해서는, docker image에 환경변수로 전달 가능. 그러나 관련된 검토가 필요함.

@NavyStack
Copy link
Author

NavyStack commented Jan 30, 2024

base image 로그 보존기간을 현재 90일로 늘리고, 다시 빌드 진행중입니다.
완료 되면 아래에서 확인할 수 있습니다.
https://github.com/NavyStack/gnuboard-g6/actions/runs/7706905472/job/21003204761

의도적으로 cancel 하고 verbose build 하겠습니다.

https://github.com/NavyStack/gnuboard-g6/actions/runs/7706905472/job/21003492170

@NavyStack
Copy link
Author

그누보드5 docker 관련 PR도 진행중 (gnuboard/gnuboard5#302)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant