Skip to content
New issue

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

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

Already on GitHub? # 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)

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

Successfully merging this pull request may close these issues.

1 participant