inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Học cách xây dựng giao tiếp WebSocket để xử lý TPS chat lớn

Thiết lập phần mềm trung gian và Cors

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

133

learnlearnlearn

11 câu hỏi đã được viết

0

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

node.js go websockets

Câu trả lời 2

0

July

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

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

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

 

0

communityai8509

안녕하세요, 인프런 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 인증서를 구성하고 로드 밸런싱을 진행할 수 있습니다.

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

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

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

트리거 질문

0

4

0

3강 질문

0

18

1

2강 nodejs 3단계 설명 질문

0

34

1

useEffect와 lifecycle문의

0

27

2

프론트엔드 학습 수준 문의

0

39

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

48

2

Streaming 중인 서비스에서 모든 파드에 broadcast하는 방법

0

120

3

프론트쪽이 리액트로 되어있는데요..

0

124

2

RunInit() 관련 질문

0

181

5

소켓 연결과 http

0

154

2

학습자료는 어디서 받나요?

1

200

1

현재 강의에서 재생관련 문제가 있어서 전달드립니다.

1

202

2

강의에 음성만 나오고 영상이 나오질 않습니다 ㅠ

0

142

1

데이터 불러오기

1

143

1

panic 사용

1

116

1

defer 사용

1

129

1

nodejs 파일이 프론트엔디 파일인가요??

0

221

1

채팅 메시지 DB로 저장 하기.

1

843

2

채팅이 2번씩 전송되는 현상 질문

1

314

1

뭔가 중간에 오타를 쳤는지 오류가 자꾸 발생하는데 혹시 go 소스코드 볼수있는곳 있나요?

1

247

1

다른 질문을 읽고 궁금한 점이 생겼습니다.

1

303

1

소켓 서버의 수평적 확장 및 무중단 배포에 대해 질문드립니다!

3

1306

2

app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됨

1

336

2

몇천명이 Room 에 동시접속할 수 있도록 설계하려면 어떤 것들이 필요할까요?

1

473

2