# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
# FROM node:14.15.4
FROM node
# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone
# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app
# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
# app dependencies, install 및 caching
COPY . .
# 컨테이너 실행 전 작동할 명령
# RUN (명령)
RUN yarn install
# 이미지 내부 환경 설정
# ENV (타겟) (내용)
# `/app/node_modules/.bin`을 $PATH 에 추가
# (bin폴더를 찾기 어려울 수 있으므로 환경변수에 추가해줌)
ENV PATH /app/node_modules/.bin:$PATH
RUN yarn build
# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
CMD ["yarn", "start"]
스프링부트 도커파일 예제
# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM openjdk:11.0.8-jre-slim
# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone
# 컨테이너 내 작업 경로
# WORKDIR (경로)
WORKDIR /app
# 작업 파일을 변수화 하기
# ARG (변수명)=(파일명)
ARG JAR_FILE=demo*.jar
# 작업 파일을 컨테이너로 복사
# COPY (파일명 또는 ${변수명}) (복사할 파일명)
COPY ${JAR_FILE} application.jar
# 컨테이너 시작 시 내릴 명령 (CMD와 ENTRYPOINT 차이 확인)
# ENTRYPOINT [(명령),(매개변수),(매개변수),(...)]
ENTRYPOINT ["java","-jar","application.jar"]
마리아 db 도커파일 예제
# 도커 허브에서 이미지를 가져와서 이미지를 작업한다
# FROM (이미지 이름:버전)
FROM mariadb
# 컨테이너 실행 전 작동할 명령
# RUN (명령)
# 타임존 설정 (설정을 하지 않으면 시간 저장시 다른 시간대로 저장됨)
RUN ln -snf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
RUN echo Asia/Seoul > /etc/timezone
# 이미지 내부 환경 설정
# ENV (타겟) (내용)
ENV MYSQL_USER testuser
ENV MYSQL_PASSWORD password
ENV MYSQL_ROOT_PASSWORD password
예제파일은 localhost를 기준으로 작성하였기 때문에 로컬컴퓨터가 아닌 곳에서 구동시 문제가 발생한다.
프론트엔드의 자바스크립트 통신 주소를 수정해주어야한다.
localhost -> aws 외부아이피로 변경.
캐시 비우기 및 강력 새로고침 필수.
(스벨트라는 프론트엔드 기술. 이번에 처음보는거라 헤메었음.)
순서를 확인하여 실행해본다.
// 1. 설치완료 후 도커 예제 받기
git clone https://gitlab.com/yalco/practice-docker.git
// 2. nano 설치하여 스벨트 코드 수정하기
// 3. 도커컴포즈로 컨테이너들 생성 및 실행 (백그라운드 작업)
docker-compose up --build -d
// 4. 도커컴포즈 컨테이너들 다같이 정지
docker-compose stop
// 5. 도커컴포즈 컨테이너들 다같이 시작
docker-compose start