# Go 언어 이미지를 기반으로 설정 (golang:1.16)FROM golang:1.16 AS builder# 작업 디렉토리 설정 (/app).WORKDIR /app# 소스 코드 복사.COPY . .# 애플리케이션 빌드 (go build).RUN go build -o myapp .# 경량의 Alpine Linux 이미지를 기반으로 설정FROM alpine:latest# 작업 디렉토리 설정 (/app).WORKDIR /app# builder 스테이지에서 빌드된 애플리케이션 복사.COPY --from=builder /app/myapp .# Expose port 8080EXPOSE 8080# 애플리케이션 실행 (CMD ["./myapp"]).CMD["./myapp"]
# Node.js 이미지를 기반으로 설정.FROM node:14# package.json 파일을 복사. 이 레이어는 종속성을 설치하는 데 사용됩니다.COPY package.json /app/# 작업 디렉토리 설정 (/app).WORKDIR /app# 종속성을 설치. package.json이 변경되지 않으면 이 레이어는 캐시됩니다.RUN npm install# 나머지 소스 코드를 복사. 이 명령어가 변경되면 이후 레이어는 다시 빌드됩니다.COPY . /app# 애플리케이션을 빌드.RUN npm run build# 애플리케이션 시작CMD["npm","start"]
# 테스트 폴더 생성mkdir dockerfile-test
# Dockerfile 파일, 간단한 테스트용 Python 파일, 필요한 패키지와 버전을 명시하는 requirements 파일 생성touch Dockerfile app.py requirements.txt
# 파일 내용 수정(상황에 맞게 작성)cat Dockerfile
# Docker 로그인docker login
# 이미지 빌드docker -f Dockerfile -t <user-name>/<repo-name> .
# 내 레포지토리에 이미지 생성docker push <user-name>/<repo-name>
# 실행 및 컨테이너 접속docker run -it <Container> /bin/bash
# Docker 객체에 대한 자세한 정보 출력docker inspect <Container_id or name>
# 이미지 실행 반복적으로docker run -d <image> sleep infinity
# 실행되고 있는 컨테이너의 모든 아이디 값 가져오기docker ps -q
# 실행되고 있는 컨테이너 전체 종료docker stop $(docker ps -q)# 생성한 레포지토리에서 이미지 내려받기docker pull <user-name>/<repo-name>