2014-12-12 2 views
2

Docker 컨테이너 내에서 SBT Revolver으로 실험 중입니다. Docker 볼륨으로 기본 디렉토리를 마운트 중입니다. Docker는 사용자를 매핑하지 않으므로 호스트 사용자가 소유하지 않은 디렉토리 인 project/project/project/target/으로 끝납니다. 읽기 전용 기본 디렉토리가있는 SBT

나는 기본 디렉토리에 build.sbt이를 추가하여 target/ 디렉터리의 위치를 ​​변경 할 수 있었다 :

target := file("/data/target") 

그러나 나는 내에서 생성 된 파일의 위치를 ​​사용자 정의하는 방법에 대한 단서가없는 project/ 디렉토리

어떤 식 으로든 빌드 출력이 기본 디렉터리 외부에서 생성되는 SBT 빌드를 가질 수 있습니까?

+0

'target' 경로를 설정해야하는 이유가 확실하지 않습니다 ... 이전에 SBT 컨테이너를 작성했으며 수정되지 않은'build.sbt' 파일을 사용합니다 (https://registry.hub.docker.com 참조)./u/errordeveloper/sbt/ – errordeveloper

+0

하지만 인공물의 소유권은 현재 조금 지저분하다는 것을 알게되었습니다. 몇 가지 컴파일러 - 인 - 도커 물건을 걷어차는 중 하나는 도커/도커 자체입니다, 나는 거기서부터 시작할 것입니다. – errordeveloper

+0

멋진 dockerfile과 jdk도 있습니다. 그러나 당신이'docker run -t -i -v'pwd' 명령을 실행하면 :/io errordeveloper/sbt : latest '; 컴파일; exit''가 루트가 소유 한 대상 디렉토리를 만듭니다. 볼륨 외부로 옮길 수 있다면 sudo로 호스트를 지울 필요가 없습니다. –

답변

1

모든 빌드 출력이 기본 디렉토리 외부에서 생성되는 SBT 빌드를 가질 수 있습니까?

나는 그런 설정이 없다고 생각합니다. 당신은 project/build.sbt 같은 것을 추가 할 수

target := file("/data/meta-target") 

하지만 실제로 등등 project/project/target 및 강제 수 있습니다.

+0

아니요,'project/build.sbt'에'target'을 할당하는 것이 효과가없는 것 같습니다. 그러나 그것이 가능할 것이라고 나는 기대했지만, 불가능하다고 주장한 +1. –

+0

음, 기술적으로는 가능한 일이지만 SBT 소스를 약간 편집해야 할 수도 있습니다 ... 현대 빌드 시스템이 읽기 전용 소스 디렉토리를 지원하지 않는 것이 이상하게 보입니다. – aij