Dockerfile에서 docker build로 호출 할 때 yaourt로 아치 리눅스 패키지를 설치하는 방법은 무엇입니까?


3

공식 pritunl / archlinux 이미지를 사용하여 자체 jira 컨테이너를 빌드하려고합니다 . 이미 yaourt을 설치하고 rusk85 / archbase에 커밋했습니다. 내 Dockerfile은 다음과 같습니다.

1: FROM rusk85/archbase
2: CMD /bin/bash
3: RUN yaourt -Sy --noconfirm atlassian-jira

이로 인해 오류가 발생합니다.

Running makepkg as root is not allowed as it can cause permanent, catastrophic damage to your system.

그런 다음 2 줄을 추가하려고했습니다.

RUN useradd -ms /bin/bash jira
USER jira

다시 암호를 묻습니다. 다른 변형은 USER jira 대신 이것을 사용하는 것입니다.

RUN su jira

첫 번째 오류도 반환합니다. 그런 다음 사용자 jira를 만들고 sudo를 설치하고 그룹 휠의 모든 사용자가 암호없이 명령을 실행할 수있게하고 jira를 그룹 휠에 추가하고 암호 jira를 사용자 jira에 할당했습니다. 이미지에 대한 변경 사항을 커밋하고 다음과 같이 다시 시도했습니다.

FROM rusk85/archbase
CMD /bin/bash
USER jira # fixed: was docker before
RUN yaourt -Sy --noconfirm atlassian-jira

다시 초기 sudo 비밀번호를 요청합니다. 나는 남성에게 알려진 모든 변종 에서이 문제를 검색하고 여러 Dockerfile을 보았지만 사용 가능한 결과없이 검색 결과가 다시 나타 났으며 내가 본 모든 Dockerfile은 completley를 혼란스럽게했습니다. 나는 이것을 통과시키는 방법에 대한 정말 간단한 예를 고맙게 생각합니다. 이것이 정말 사소한 문제인지 사과하지만 방금 Docker로 시작했으며 지금까지 아치에 대한 지식이 그다지 잘 보이지 않는 것 같습니다.


아주 오래된 이미지처럼 보입니다. 내부의 모든 패키지를 업데이트 했습니까? base-devel패키지 그룹 을 설치 했습니까?
quixotic

@quixotic : 죄송합니다. 잘못된 저장소를 언급했습니다. 나는 실제로 공식 (?) 아치 리눅스 이미지를 사용하고 있습니다 pritunl/archlinux. 내 게시물에서 수정했습니다. 예, 심지어 (부분적으로 afaik) yaourt에 따라 설정했습니다 base/devel. 어떤 식 으로든 루트가 필요한 base/devel패키지를 설치할 수 없다는 딜레마와 어떤 관련이 Dockerfile있습니까? Btw 나는 미니 루트 파일 시스템 버전을 사용하여 alpine linux로 내 자신의 기본 이미지를 만들었습니다. 작동하는 자체 nginx 리버스 프록시를 빌드하십시오. goo.gl/qCu7pygoo.gl/xoM5vJ를 참조하십시오 . 그래도 대답이 필요합니다.
Sven M.

나는 yaourt를 사용하지 않으므로 추측하고 있습니다. yaourt컨테이너를 시작할 때마다 새로운 패키지를 만들 것이라고 생각합니다 . RUN pacman -S base-devel이미지에 해당 패키지가 포함되어 있지 않은 경우 먼저 (또는 이와 유사한) 필요할 수 있습니다 . 표시되는 makepkg오류 fakeroot는 필요한 표시 일 수 있으며 이는 기본 개발 패키지에 포함되어 있습니다. yaourt설치하는 데 기본 devel 패키지에 의존하지 않는 것이므로 다른 패키지를 가지고 있다는 의미는 아닙니다.
quixotic 2019

글쎄, 나는 devel의 일부만 설치했고 fakeroot는 실제로 누락되었습니다. fakeroot로 아직 시도하지는 않았지만 사용 사례 중 하나는 관리자 권한 / 루트 권한없이 패키지를 작성하는 것입니다. 그 맞습니까?
Sven M.

답변:


0

무엇보다도 YAOURT를 사용하지 마십시오 .

그런 다음 공식 아치 makepkg 위키 페이지를 인용하겠습니다 .

makepkg루트 권한 으로 실행 되는 것은 허용되지 않습니다 . a PKGBUILD가 임의의 명령을 포함 하는 방법 외에도 루트로 빌드하는 것은 일반적으로 안전하지 않은 것으로 간주됩니다. 일반 사용자 계정에 액세스 할 수 없는 사용자makepkgnobody 사용자 로 실행해야합니다 .

따라서 문제로 돌아가려면 수행하려는 작업을 시도하지 않아야합니다.

그러나 여전히 원하는 경우 :

  • yaourt을 설치할 수 있지만 루트가 아닌 사용자 로만 설치할 수 있습니다 .

또는

  • 당신은 시도 할 수 있습니다 (책임) 앨런 맥레이 이전의 교체의 좋은 설명으로 간주됩니다의 솔루션 makepkg --asroot명령.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.