docker와 코드실행기 관련 질문드립니다.

조회수 1324회

안녕하세요.

hashcode에 있는 코드실행기 같은 서비스를 만들고 싶습니다.

서비스를 만들기 위해서 제가 생각했던 방식은

사용자가(client에서) source code를 제출하면 (예를 들어 java라고 하면)

웹서버에서..java 파일을 만들고 컴파일하고 실행한 결과를

사용자에게 돌려주는 방식을 생각했습니다.

위의 방식은 실제로 개발을 했었구요.

이로 인한 문제점은 악의적인 코드를 실행시키면 서버가 망가질 수 있기 때문에

소스를 실행하는 가상머신이 필요했습니다.

그래서 cloud ide 또는 web ide 에 대해 알아보았는데 다들 docker를 알아보라고 하더군요.

그런데 docker를 공부하고 있지만 터미널에서 docker를 구동시키는 방법은 있지만

웹서버에서 docker를 구동하는 방법은 나와있지 않더군요.

혹시 방법론이 다른건가요?

제가 원하는 것은 사용자가 코드를 제출하면 (어떤 언어든) 웹서버에서 그 코드를 실행할 수 있는

docker container를 생성하고 여기서 코드를 실행하고 그의 결과를 웹서버에 돌려준 뒤

다시 클라이언트에 전달하고 싶습니다.

제가 생각하는 방식이 틀린거라면 어떻게 해야될까요?

개발환경은 nodejs expressjs react 입니다

1 답변

  • 말씀하신 방식이 맞습니다.

    해시코드나 프로그래머스에서도 docker 환경에서 코드를 실행하고 있습니다. 어떤 언어로 웹애플리케이션을 개발하시는지 모르지만 각 언어별로 docker container를 생성하고 실행하는 라이브러리가 있습니다.

    https://docs.docker.com/engine/api/sdks/

    참고로 코드를 실행할 때 코드의 크기가 클 경우 command line parameter로 넘길 수 없기 때문에 생성된 코드를 파일로 저장하고 volume mount를 해서 container에서 접근하는 방식을 사용할 수 있습니다. 그리고 실행결과 stdout과 stderr을 사용하시면 되구요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)