[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