sbt의 Docker 이미지 찾기 및 만들기
sbt의 Docker 이미지 찾기 및 만들기
개요
sbt를 사용할 수 있는 docker 이미지 찾기
결국 스스로 Dcokerfile을 만들고 이미지를 만들었어요.
그때 얻은 지식과 식견을 공유할 수 있었으면 좋겠다고 생각해서 썼다.
제작된 Docker image, Docker file은 아래에 있습니다.
모티프
특정 Scara 프로젝트의 개발, 작업 확인 시 사용자 환경에서 수행되지 않음
Docker image를 원하기 때문입니다.
Docker image를 원합니다.
개발 환경으로 Windows를 자주 사용합니다.
Scara는 JVM에서 실행되는 언어이기 때문에 지금까지 환경 의존에 신경 쓰지 않았다.
특정 Scara 프로젝트, 특히 JavaScript를 사용하는 프로젝트
sbtjob을 실행할 수 없는 현상에 부딪혔다.
구체적으로 말하면, 나는 munit의 문서를 수정하고 싶다
수정 후 문서 생성을 확인할 때docs/docusaurusCreateSite 작업 수행
yarn
이 이동하지 않아 실패했습니다.> sbt docs/docusaurusCreateSite
...
[error] (docs / docusaurusCreateSite) java.io.IOException: Cannot run program "yarn" (in directory "C:\Users\kofuj\work\scala\munit-mine\website"): CreateProcess error=2, 指定されたファイルが見つか
りません。
[error] Total time: 49 s, completed YYYY/MM/DD h:mm:ss
아마도 이 일대 원인sbt가 실행되기 시작했을 때 윈도우의 실행 경로를 읽지 못해서 실패한 것 같습니다.
환경 설정을 재검토해야 할지도 모르지만, 가까스로 Docker에서 확인을 해보면
나는 차이를 개의치 않아도 좋아질 수 있다고 생각해서 Docker image를 찾아보고 싶다.
Docker image 찾기
원하는 인상이 없다.
찾는 조건은 다음과 같다
특별히 yarn이 함유된 것은 발견되지 않았다.
※ 단지 찾을 수 없을 뿐
그래서 가까스로 Docker file을 만들어 보았습니다.
기존 이미지 이후 추가 가능
여러 번 사용하려면 처음부터 넣는 게 좋아요.
Docker 이미지 만들기
참고물
sbt의 주요 멤버 중 한 명인 eed3si9n씨가 눈길을 끌었습니다.
Docker의 sbt
관심사는 알피니를 기반으로 익숙한데, JDK8, JDK11이 선택할 수 있는 곳을 선택해 기쁘다.
이미지를 직접 사용하지 않는 이유는 다음과 같습니다.
Dockerfile
용도에 따라 구분하여 사용하기 위해 sbt의 설치와yarn의 설치를 분리하였다.
JDK가 LTS 물건으로 전환할 수 있었으면 좋겠다고 생각해서 8, 11, 17을 선택했어요.
8,11은adopt의 이미지이고 17은adopt가 없기 때문에openjdk를 사용합니다.
FROM adoptopenjdk/openjdk11:jre-11.0.13_8-alpine
ARG SBT_VERSION=1.5.5
RUN set -x \
# install sbt
&& apk --update add --no-cache --virtual .build-deps curl \
&& SBT_VER=${SBT_VERSION} \
&& SBT_URL="https://github.com/sbt/sbt/releases/download/v${SBT_VER}/sbt-${SBT_VER}.zip" \
&& apk add shadow bash openssh rsync git \
&& curl -Ls ${SBT_URL} > /tmp/sbt-${SBT_VER}.zip \
&& mkdir /opt/sbt \
&& unzip /tmp/sbt-${SBT_VER}.zip -d /opt/sbt \
&& sed -i -r 's#run \"\$\@\"#unset JAVA_TOOL_OPTIONS\nrun \"\$\@\"#g' /opt/sbt/sbt/bin/sbt \
&& apk del --purge .build-deps \
&& rm -rf /tmp/sbt-${SBT_VER}.tgz /var/cache/apk/* \
# create workdir
&& mkdir /work
WORKDIR /work
ENV PATH="/opt/sbt/sbt/bin:$PATH" \
JAVA_OPTS="-XX:+UseContainerSupport -Dfile.encoding=UTF-8" \
SBT_OPTS="-Xmx2048M -Xss2M"
sbt의 설치는 다른 창고에서 보면 크게 다음과 같은 두 가지로 나뉜다다른 URL에서 sbt 압축 파일을 가져오는 Docker file 참조
언제부턴가 얻을 수 없다
GiitHub의 압축 파일을 가져옵니다.
FROM keyno63/sbt:1.5-jdk11-alpine
RUN set -x \
&& apk add bash curl nodejs \
&& touch ~/.bashrc \
&& curl -o- -L https://yarnpkg.com/install.sh | bash \
&& ln -s "$HOME/.yarn/bin/yarn" /usr/local/bin/yarn
ENV PATH="$HOME/.yarn/bin:$PATH"
위에 쓰인 sbt의 Docker image를 바탕으로yarn 명령을 추가한 Docker file을 만들었습니다.요즘 시대는 자동화할 수 있어서 좋은 시대인 것 같아요.
github-actions 설정
munit
의docs/docusaurusCreateSite
docker image로 동작을 확인했다.정상적인 동작이 끝나면 제품도 확인할 수 있습니다.
> docker run -it --rm -v ${PWD}:/work -w /work keyno63/sbt-yarn:1.5-jdk11-alpine sbt docs/docusaurusCreateSite
[info] [launcher] getting org.scala-sbt sbt 1.5.5 (this may take some time)...
...
Site built successfully. Generated files in 'build' folder.
Done in 63.03s.
[success] Total time: 295 s (04:55), completed MM DD, YYYY, hh:mm:ss
찾다가 닮은 꼴을 발견했어요.
Docker image를 찾다가 좋은 인상을 많이 발견했기 때문에 다음과 같이 소개해 드리겠습니다.
이 가운데 반년 만에 업데이트된 sbt 버전은 1.5 이상에 달했다.
hseeberger/scala-sbt
업데이트와 유지보수도 빈번하다.다만, 알피니트의 기본적인 인상은 없는 것 같다.
westwater/scala-sbt
chatworks씨.
xirc/sbt-scala
sdkman을 사용하면 최신 jdk, scala, sbt에 들어갈 수 있으며,github actions에서 매주 업데이트됩니다.
신경 쓰이는 점은 이미지 크기가 크고pull이 나올 때 무겁다
돌아보다
환경 의존도가 적은 개발 환경으로서 필요한 Docker image를 얻을 수 있다는 것에 만족합니다.
.ivy2
의 캐시도 마운트하는 방법에 따라 해결할 수 있기 때문에 로컬 환경과 같은 개발 체험을 실현할 수 있다.최후
JVM 덕분에 환경 의존도가 적은 언어라도 Docker image가 있으면 편리하다는 것을 다시 한 번 느꼈습니다.
좋은 개발 체험을 해야 한다.
Reference
이 문제에 관하여(sbt의 Docker 이미지 찾기 및 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/maigo_name/articles/ae505be95cbd1a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)