# pups 사용법 - Docker에서 실행 결과 보기?

**URL:** https://meta.discourse.org/t/how-to-use-pups-run-output-in-docker/205347
**Category:** Development
**Created:** [10월 6, 2021, 12:31오후 UTC](https://meta.discourse.org/t/how-to-use-pups-run-output-in-docker/205347 "2021-10-06T12:31:53Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![spirobel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/spirobel/32/170908_2.png) [@spirobel](https://meta.discourse.org/u/spirobel)
#### Post date: [10월 6, 2021, 12:31오후 UTC](https://meta.discourse.org/t/how-to-use-pups-run-output-in-docker/205347/1 "2021-10-06T12:31:53Z")

</div>

오래도록 [pups](https://github.com/discourse/pups)가 정확히 무엇인지 잘 이해하지 못했고, 솔직히 아직까지도 조금 혼란스럽습니다. 😄 😅

discourse 도커 이미지가 설정되어야 한다는 점은 이해합니다. 이를 bash 스크립트로 처리하는 대신, [https://github.com/discourse/discourse\_docker/tree/master/samples](https://github.com/discourse/discourse_docker/tree/master/samples) 에 있는 yml 파일들(이 파일들이 bash 스크립트를 생성합니다)을 통해 처리됩니다.

docker 컨테이너의 시작과 pups를 통한 설정은 이 launcher 스크립트에서 서로 얽혀 있습니다.

> <https://github.com/discourse/discourse_docker/blob/138f0dff0d6cc7149bfd852fbba33a6366eae7df/launcher#L658>

제가 링크한该行은 저에게 특히 중요합니다. 이 코드는 pups가 docker 컨테이너 내에서 실행되도록 하는 것 같습니다. test.yml 파일을 pups로 실행해 보았지만, 당연히 docker 컨테이너 내에서 실행되지 않았습니다. 그저 즉시 실행되는 bash 스크립트(bash 명령어?)를 생성했을 뿐입니다.

제 질문은 다음과 같습니다: pups를 dev docker 컨테이너 내에서 실행하는 방법은 무엇인가요? 제가 가리킨 이 라인은 매우 길고, 제 사용 사례에는 일부가 불필요해 보입니다. pups의 출력을 docker 컨테이너와 결합하는 간단한 예시를 누군가가 알려주실 수 있을까요?

기본적으로 launcher 스크립트에 있는 것과 유사한 pups 명령어를 추가하고 싶습니다. [boot\_dev 스크립트](https://github.com/discourse/discourse/blob/f58ab2283d745449ca2c0634350eeb95c7f182d0/bin/docker/boot_dev#L108) 의 끝에 추가하거나(또는 boot dev 스크립트 실행 후 별도 스크립트로 실행하거나) 하는 방식입니다.

_배경 정보:_

이렇게 하려는 이유 → runit에 장기 실행되는 프로세스를 추가하고 싶습니다. @merefield 님이 이를 수행하는 방법을 참고할 수 있도록 Frotz 플러그인을 추천해 주셨습니다.

> [@플러그인에 runit 서비스를 추가할 수 있나요?](https://meta.discourse.org/t/can-i-add-an-runit-service-in-a-plugin/205086/4?u=spirobel):
>
> The pattern seems the correct one to me as the templates are like docker composers. I use this to clone and make dumb frotz in the Discourse Frotz plugin. It’s rock solid.

질문은 이렇습니다: pups 입력을 테스트하기 위해 로컬에서 어떻게 해야 하는지 궁금합니다. 제 이해로는 docker dev 인스턴스는 yml 파일과 pups를 통해 설정되지 않는 것 같습니다. Frotz 플러그인의 pups 입력은 플러그인 설치 시 서버 yml 파일과 관련이 있으므로, 로컬에서 어떻게 해야 하는지 기본적으로 혼란스럽습니다.  
자, 감사합니다 😅  
수정:  
자, 이런 종류의 라인을 찾았습니다.

> <https://github.com/discourse/discourse_docker/blob/d457b6b9a8d57db4d474d6a7d5b636d5773577e8/image/discourse_dev/Dockerfile#L20>

즉, pups는 단순히 컨테이너 내에서 실행되기만 하면 된다는 뜻입니다. 왜 명령어 생성에만 사용된다고 생각했는지 모르겠습니다. readme에서 이 문장을 봤기 때문입니다.

> pups는 유닉스 이미지를 생성하는 과정을 자동화할 수 있게 해주는 작은 라이브러리입니다.

이 문장은 제게 큰 의미가 없었기 때문에 자연스럽게 무의식이 개입했습니다.

> `--gen-docker-run-args` 인수는 pups의 출력이 `docker run <arguments output>` 형식이 되도록 하는 데 사용됩니다.

어떻게든 이 문구가 저를 pups를 yml 파일을 bash 명령어 출력으로 변환하는 도구, 즉 yml to bash 컴파일러처럼 개념화하게 만들었습니다. 하지만 실제로는 yml 인터프리터에 더 가깝습니다. 명령어를 생성할 뿐만 아니라 즉시 실행하기도 합니다.
