게시판KSB융합연구단은 인간중심 초연결 지능정보사회를 구현하는데 이바지하겠습니다.

BeeAI 활용 공모전 Q&A

[BeeAI] OnDemandExternalServing 엔진 관련 문의드립니다.

  • Name 문성원
  • Registration Date 2019-08-13
  • Hits 70
안녕하세요, ICPS팀 문성원입니다.

현재 OnDemandExternalServing 엔진 활용하여 서버 구축 중에 있는데요,

PyContainerRunner가 호출하는 base.py에서 로컬 저장소에 접근할 수 있는 방법이 혹시 있을까해서 문의 드립니다.
(현재 base.py는 로컬 저장소에 저장 및 연동 되어있습니다.)

또는 base.py가 실행되는 /app/modules 디렉토리에 파일 업로드가 가능하다면 그 방법도 괜찮습니다!

고생 많으십니다, 미리 감사드려요! :)


- 문성원 드림

Answer

안녕하세요.

base.py 코드에서 직접 호스트의 로컬파일시스템에 접근하는 방법은 현재 버전에서는 지원되지 않습니다.

따라서, pyContainerRunner를 이용하여 base.py를 도커이미지로 만들어 사용하는 경우,
파일 출력등의 작업은 워크플로우 실행후에 생성되는 이미지 내부의 디렉토리에 파일을 출력하는 경우에만 정상 동작합니다.

예) base.py
--------------------------------
def main_func(x, user_args=None):
x_json = json.loads(x)
input = x_json['input']
added = input + input


# 현재는 base.py에 아래와 같이 직접 로컬호스트에 파일을 생성하고자 하면, 에러가 발생하고 동작되지 않습니다.
#f = open('/home/csle/test.txt', mode='wt', encoding='utf-8')

# base.py에는 아래와 같이 pyContainerRunner가 호출하여
# 생성 및 실행되는 도커 이미지의 내부의 경로에 출력을 하면, 파일이 정상적으로 생성됩니다.
f = open('/app/test.txt', mode='wt', encoding='utf-8')
f.write("Hello, World\n");
f.close()


return '{{"output": {0}, "user_args": {1}}}'.format(
str(added), user_args)
----------------------------------------

위의 base.py 를 pyContainerRunner 를 통해 실행하고, imgName을 dockerizetest_json 라고 설정한 경우에,
호스트에는 dockerizetest_json 이름의 도커이미지가 생성되며, 해당 이미지 내부의 /app 디렉토리 하위에 test.txt파일이 써집니다.

만약, 해당 파일을 로컬호스트로 복사해오려면, 호스트에서 아래의 명령을 수행하시면 됩니다.
docker cp dockerizetest_json:/app/test.txt 저장하고자하는로컬호스트디렉토리

감사합니다.

- 안후영 드림