ecs를 활용하여 데디서버를 생성해보기 위해 테스트를 진행하였고
테스트 결과 ecs를 이용해 인스턴스가 생성되는 것을 확인하였고
1인스턴스 = 1게임서버 형태로 서버가 만들어지는것을 확인하였다.
팀 내에 회의 결과
ecs를 배운다는 입장에서 활용해 보는 것도 좋을 거 같긴 하지만 시간 관계상 그리고 비용 문제
로 테스트를 성공한 정도로 만족하고 ec2 인스턴스 내에서 도커를 띄우는 방향으로 가게되었다.
yarn을 사용하였기에 yarn 설치
1. Yarn GPG 키 추가
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
2. Yarn 공식 리포지토리 추가
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
3. 패키지 리스트 업데이트
sudo apt update
4. Yarn 설치
sudo apt install yarn
Docker 설치(인스턴스)
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo usermod -aG docker $USER
Docker로 빌드한 이미지를 .tar파일로 저장(Docker)
docker save -o dedicated-server.tar dedicated-server
EC2에 tar파일로 저장(배쉬)
scp -i /key.pem /dedicated-server.tar ubuntu@:/home/ubuntu/
tar파일 EC2내 Docker에 이미지로 저장(인스턴스)
docker load -i dedicated-server.tar
EC2내 Docker 이미지 확인
docker images
import { spawn } from 'child_process';
const runProcess = spawn('docker', [
'run',
'-d',
'--rm',
'--name',
containerName,
'-e',
`INVITE_CODE=${inviteCode}`,
'dedicated-server', //띄울 Docker 이미지 명
]);
tcpServer.listen(3000, config.server.tcpHost, () => {
console.log(`새로운 게임이 포트 ${tcpServer.address().port}에 생성`);
console.log(tcpServer.address());
const roomServer = net.connect({ host: '172.17.0.1', port: 6666 }, () => {
console.log('발송');
roomServer.write(
JSON.stringify(`${inviteCode}:${tcpServer.address().port}`),
);
});
});