인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

learnlearnlearn님의 프로필 이미지

작성한 질문수

대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기

미들웨어, Cors 설정하기

오늘 강의 듣기 시작했는데요!

작성

·

42

0

제 프로젝트에 채팅 기능을 넣고 싶어서 듣게 되었습니다. (일반 js, html로 이루어진)
view 부분은 아무거나 제가 해서 하면 되겠지만
이 채팅 서버를 api처럼 사용할 예정이에요
이것을 배포할 때는 어떤식으로 해줘야 하는지 잘 모르겠네요. spring 은 톰캣으로 webapp에 war를 넣어서 해당 컨텍스트를 실행시켜주면되고 플라스크는 wsgi 를 사용해서 requirement.txt 에 외부라이브러리 세팅해주고
돌리면 돌아갔는데 이 강의 서버는 리눅스에서 어떤식으로 리눅스에서 돌리면 될까요 ? 도커를 사용할 예정입니다..!
이 웹 어플리케이션을 배포해서 돌리기위한 절차가 궁금합니다!

답변 2

0

July님의 프로필 이미지
July
지식공유자

docker를 사용하신다면, 그냥 이미지를 생성하실 떄, 빌드 바이너리 파일을 넘겨주면 되지 않을까 싶습니다.

golang에서 빌드 파일을 생성하는 명령어는 go build -o <이름> 을 통해서 생성한 바이너리 실행파일을 넘겨주고,

해당 이미지 내부에서 go run <./이름> 을 통해 실행시키면 되지 않을까 습니다.

 

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. learnlearnlearn님.

채팅 서버를 실제 프로젝트에 배포하는 방법에 대해 문의 주셨군요. 간단히 요약하면, 도커를 사용하여 웹소켓 서버를 배포하려면 몇 가지 주요 단계가 필요합니다. 이 과정을 통해 여러분의 웹소켓 서버를 컨테이너화하여 리눅스 서버에서 안전하고 일관된 환경에서 실행할 수 있습니다.

1. Dockerfile 작성

먼저, 여러분의 웹소켓 서버 애플리케이션을 위한 Dockerfile을 작성해야 합니다. 이 파일은 도커 이미지 빌드에 필요한 모든 설정을 포함하며, 기본 베이스 이미지와 애플리케이션 설치 및 실행 방법을 정의합니다.

# 예시 Dockerfile
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o mychatapp main.go

# 실행용 이미지
FROM golang:1.18
WORKDIR /app
COPY --from=builder /app/mychatapp .
CMD ["./mychatapp"]

2. Docker 이미지 빌드

Dockerfile을 기반으로 도커 이미지를 빌드합니다.

docker build -t mychatapp .

3. Docker 컨테이너 실행

이미지를 빌드한 후, 도커 컨테이너를 실행합니다. 필요에 따라 포트를 노출해주어야 합니다.

docker run -d -p 8080:8080 mychatapp

4. 환경 변수 설정 및 볼륨 마운트 (필요 시)

애플리케이션이 사용하는 환경 변수나, 저장해야 할 데이터가 있다면, 컨테이너 실행 시 환경 변수를 설정하거나 볼륨을 마운트하여 데이터를 유지할 수 있습니다.

docker run -d -p 8080:8080 \
  -e ENV_VARIABLE=value \
  -v /host/data:/app/data \
  mychatapp

5. 리버스 프록시 설정 (옵션)

배포 환경에 따라 Nginx와 같은 리버스 프록시를 설정하여 SSL 인증서를 구성하고 로드 밸런싱을 진행할 수 있습니다.

도커에 대해 좀 더 구체적인 설정이나 배포에 필요한 설정은 프로젝트의 요구 사항에 따라 조정해야 할 수 있습니다.

관련된 유사한 경험과 질문을 다룬 답변이 있어 공유드립니다:
- 웹 소켓 서버의 수평적 확장 및 무중단 배포에 대해 질문드립니다!: 웹 소켓 서버의 확장과 배포에 대해 보다 상세한 논의를 포함하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.