[docker] 다커 컨테이너로 심플 업로드 서버 관리하기 Computer Tip

이제는 어떤 서비스를 해 보는데 있어,
우선 다커에서 해당 서비스를 찾을 수 있는가 확인하는 것이 우선인 시대가 도래했나 봅니다.

또 다커 허브에서 찾으면 대부분 존재하고는 합니다.

간단하게 업로드 서비스가 존재하여 해당 서버로 파일을 업로드하고 있는지 조사하고,
다운받을 수 있는 등의 구축을 위한 것은,

simple-upload-server 에서 확인할 수 있습니다.

해당 서버를 동작시키기 위해서는,
docker-compose.yaml 파일에 다음의 내용을 추가합니다.

  ##############################################################################
  # Public upload Server
  ##############################################################################
  upload_server:
    image: mayth/simple-upload-server
    container_name: my_upload
    hostname: my_upload.local
    volumes:
      - "/path/upload:/var/root"
    expose:
      - "25478/tcp"
    ports:
      - "25478:25478"
    command: app -token f9403fc5f537b4ab332d /var/root

여기에서 주의할 사항은, 마지막 줄의 token을 항상 붙밖이로,
(특히 위의 내용은 디폴트로 서버에서 지정한 것이라 쉽게 노출되어 있습니다)
두지 말고 주기적으로 교체해주고 이를 업로드하는 곳에 알려주어야 합니다.

위와 같은 docker 서비스를 기동시키면,
이제 다른 클라이언트에서 curl로 다음과 같이 확인하고 업로드, 다운로드 가능합니다.


1) 업로드

$ curl -Ffile=@/path/sample.txt 'http://my_upload:25478/upload?token=f9403fc5f537b4ab332d'
{"ok":true,"path":"/files/sample.txt"}

파이썬의 requests 를 이용하여 동일하게 업로드 시키려 했는데,
쉽게 되지 않아 반나절 정도 걸렸습니다.
(이런 시행착오는 다른 분들도 겪지 않게 공유합니다)

위의 curl 대신 파이썬에서는 다음과 같은 스크립트를 작성하면 됩니다.

import requests

upload_host = 'my_upload'
upload_port = 25478
upload_token = 'f9403fc5f537b4ab332d'
upload_file = r'C:\work\sample.txt'

url = 'http://%s:%s/upload' % (upload_host, upload_port)
params = {'token': upload_token}
with open(upload_file, 'rb') as ifp:
    multiple_files = [('file', (upload_file, ifp, "application/binary"))]
    r = requests.post(url, params=params, files=multiple_files)
print(r)
print(r.text)

upload_token 을 docker-compose.yaml 에서 지정한 것으로 설정하면 됩니다.

주의: 업로드할 파일을 path를 주고 올려도 실제 업로드 서버의 폴더 (마운트 호스트 볼륨)에는 해당 파일이름으로 저장됩니다.


2) 다운로드

$ curl 'http://my_upload:25478/files/sample.txt?token=f9403fc5f537b4ab332d'


3) 업로드 상태 체크
$ curl -I 'http://localhost:25478/files/sample.txt?token=f9403fc5f537b4ab332d'
HTTP/1.1 200 OK
또는
HTTP/1.1 404 Not Found

이상과 같이 간단한 업로드 서비스에 관해 살펴보았습니다.


어느 분께는 도움이 되셨기를 ..



핑백

덧글

댓글 입력 영역

구글애드텍스트