게임 웹서버 만들기

Docker세팅하기 - 게임 웹서버 만들기 1

소수결게임 2025. 11. 29. 14:03

이 프로젝트는 윈도우에 Docker를 세팅하여 진행합니다.

 

[사용 기술 스택]

Docker Desktop + Ubuntu

웹서버 : .net core (dotnet version 10)

DB : Mysql, Redis

 

 


 

[Docker Desktop 설치]

 

https://docs.docker.com/desktop/setup/install/windows-install/

위 링크를 통해 Docker Desktop 설치페이지로 이동합니다.

 

 

자신의 Windows 시스템에 맞는 버전을 선택하여 설치합니다.

 

[ + WSL 버전 문제 해결]

설치 후 Docker Desktop을 실행시켜보면, WSL버전이 낮다는 메세지가 나올 수 있습니다.

 

 

WSL이란?

윈도우에서 리눅스 환경을 실행할 수 있도록 도와주는 기능입니다.

Mac 사용자의 경우 이와는 다른 방법으로 리눅스 환경을 구성해야 합니다.

 

 

wsl.exe --update



CMD를 켜서 wsl 업데이트를 시켜줍니다.

 

 

Docker 데스크톱을 실행시키면 이런 모습입니다.

 

 


 

[이미지 다운로드]

Docker 이미지를 다운로드하여 컨테이너로 실행하는 방식을 사용합니다.

여기서 말하는 이미지는, 특정 프로그램이나 운영체제가 설치된 상탤르 저장한 일종의 템플릿이라고 생각하면 이해하기 쉽습니다.

 

직접 이미지를 만들수도 있지만

Docker에서는 수많은 공식 이미지를 무료로 제공하고 있기때문에

공식 이미지를 사용하는 것을 추천드립니다.

 

 

 

https://hub.docker.com/search?badges=official

 

Explore Docker's Container Image Repository | Docker Hub

 

hub.docker.com

 

위의 링크에서 공식이미지를 받을 수 있습니다.

 

제가 사용할 이미지는 Ubuntu(.Net버전), Mysql, Redis입니다.

이후 단계에서 Docker가 자동으로 필요한 이미지를 다운로드 하므로, 지금 미리 받아두지 않으셔도 괜찮습니다.

 


 

[도커 네트워크 만들기]

Ubuntu 웹서버와 Mysql, Redis를 서로 연결하기 위해서는 가상의 네트워크를 먼저 생성해야 합니다.

 

CMD나 PowerShell을 실행한 후, 다음 명령어를 입력합니다.

docker network create [네트워크명]

 

 


 

[DB 컨테이너 생성]

DB 컨테이너를 생성합니다.

 

1. Mysql

 

docker run -d   --name [Mysql 컨테이너명]   --network [네트워크명]   -e MYSQL_ROOT_PASSWORD=[Root PW]   -e MYSQL_DATABASE=[DB명]  -p [포트]   mysql:8.0

CMD나 PowerShell을 실행시켜, 위와 같이 입력해줍니다.

Docker가 mysql:8.0 이미지를 자동으로 다운로드하고 컨테이너를 세팅 합니다.

 

 

2. Redis

 

docker run -d --name [컨테이너명] --network [네트워크명]  -p 6379:6379   redis:alpine

 

Redis도 똑같이 실행시켜줍니다.

Redis:alpine은 경량화된 Redis 이미지이며, 리눅스 운영체제에서 자주 사용됩니다.

 


[웹서버 컨테이너 생성]

Ubuntu 컨테이너를 생성하겠습니다.

웹서버에 작성중인 소스코드를 쉽게 반영하기 위해 마운트된 컨테이너를 생성할 것입니다.

 

저는 소스코드를 D:/Projects/portfolio 에 저장하고 있으므로, 이 폴더와 웹서버 안의 projects폴더를 연결하겠습니다.

 

마이크로 소프트에서 닷넷이 설치된 Ubuntu의 이미지를 제공해주고 있으므로 이 이미지를 사용해 컨테이너를 생성합니다.

 

[일반 Ubuntu]

docker run -it  --name pp-ubuntu --network pp-net  -v D:/Projects/portfolio:/projects  -w /projects ubuntu bash

 

[.net sdk ] << 이걸 설치합니다

docker run -it  --name pp-dotnet  --network pp-net  -v D:/Projects/portfolio:/projects  -w /projects  mcr.microsoft.com/dotnet/sdk:8.0  bash

 

 

 

 

 


[추가)Docker Compose 설정]

 

Ubuntu, Mysql, Redis컨테이너를 매번 관리하다보면 번거로울 수 있습니다.

이는 DockerCompose를 통해 해결할 수 있습니다.

 

 

services:
  app:
    container_name: [Ubuntu 컨테이너명]
    image: mcr.microsoft.com/dotnet/sdk:10.0
    volumes:
      - [데스크톱 마운트위치] 
    working_dir:  [웹서버 소스 위치]
    networks:
      - [사용 네트워크]
    stdin_open: true
    tty: true   
    command: bash 

  db:
    container_name: [Mysql 컨테이너명]
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: [DB 비밀번호]
      MYSQL_DATABASE: [DB명]
    ports:
      - "3306:3306"
    networks:
      - [사용 네트워크]

  redis:
    container_name: [Redis 컨테이너명]
    image: redis:alpine
    ports:
      - "6379:6379"
    networks:
      - [사용 네트워크]

networks:
  [사용 네트워크]:

 

컨테이너 설정을 docker-compose.yml에 작성합니다.

 

 

 

 

docker compose up -d

docker compose 를 이용하여 한번에 컨테이너를 세팅할 수 있습니다.

이때, 기존에 만들어둔 컨테이너들과 이름이 같으면 안됩니다.

 

 

ls를 이용해 마운트되어있음을 확인했습니다.

 


[업데이트 및 명령어]

1. 처음 컨테이너를 시작하셨으면 업데이트를 하는 것을 추천드립니다.

 

apt update && apt install -y curl

 

 

 

2. Docker 생성, 실행 명령어

 

-. 컨테이너 생성

docker run

 

 

-. 컨테이너 실행

docker start

 

 

-.컨테이너 접속(실행되어있는경우)

docker exec