[Docker]

[Docker] Docker 명령어 & 사용법

두두만두 2023. 5. 6. 02:12

초기세팅

1. RDS mysql 서버에 접속합니다.

$ mysql -h 'RDS Database Endpoint 주소' -u root -p

2. 데이터베이스 생성합니다.

mysql> create database 'DATABASE 명' character set utf8mb4 collate utf8mb4_unicode_ci;

3. .env 생성 후 DATABASE의 정보를 본인에 RDS 데이터베이스와 맞게 수정합니다.

# typeorm
TYPEORM_CONNECTION = mysql
TYPEORM_HOST = RDS Endpoint 주소
TYPEORM_USERNAME = root 
TYPEORM_PASSWORD = password
TYPEORM_DATABASE = DB_NAME
TYPEORM_PORT = 3306
TYPEORM_LOGGING = TRUE

# dbmate
DATABASE_URL="mysql://root:password@host:port/dbname"

 

4. 해당 디렉토리로 이동 후 데이터베이스에 migrate가 잘 작동하는지 확인합니다.

 5. RDS에 접속하여 연결했던 데이터베이스에 테이블이 잘 생성되었는지 확인합니다.

 

Docker Image 생성

 

처음 Docker 명령어를 사용하시면 아래와 같은 권한 문제가 발생할 수 있습니다.

에러에 따라서 다음과 같은 명령어를 입력하여 해결합니다.

$ docker run ...

# docker 명령어 입력 후 위와 같은 permission 에러 발생 시
$ sudo chmod 666 /var/run/docker.sock

 

Dockerfile 작성

 

Docker image를 생성하기 위해 프로젝트에 맞는 Dockerfile을 작성합니다.

FROM node:16-alpine

WORKDIR /usr/src/app

COPY package*.json .

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "start"]

 

Docker Build

docker build -t 'DockerHub username'/'image name(project name)':'version' 'Dockerfile path'

ex) docker build -t kakao/kakaoproject:0.1.0 .

 

Docker Push

$ docker push kakao/kakaoproject:0.1.0

 

EC2 접속

EC2에 컨테이너를 활용하여 서버를 배포하기 위해 해당 EC2에 접속하여 Docker를 설치해야 합니다.

그리고 DockerHub에 있는 이미지를 불러와 컨테이너를 실행합니다.

# 생성한 EC2 instance 접속

# get-docker.sh 다운로드
$ curl -fsSL https://get.docker.com -o get-docker.sh

# ll 명령어로 현재 디렉토리에 get-docker.sh 파일 확인
$ ll

# get-docker.sh 실행하여 Dokcer 설치
$ sh get-docker.sh

# 만약 처음 EC2에 ssh 접속할 때 Permission Error가 발생한다면?
# 해당 에러는 pem 파일이 너무 많은 권한 설정이 되어있어 발생함

# pem 파일을 최소한의 권한으로 설정
$ sudo chmod 400 'Key 이름'.pem

 

Docker pull

$ docker pull kakao/kakaoproject:0.1.0

 

Docker run

local에서 이미지를 먼저 찾아본 후 없으면 자동으로 DockerHub에서 이미지를 찾습니다.

그 후 곧바로 이미지를 불러와 명령어가 실행됩니다.

$ docker run --name api -p 3000:3000 kakao/kakaoproject:0.1.0

 

실행중인 Docker 확인 명령어 

$ docker ps