포스트

Docker - dockerfile

.dockerignore

.gitignore 파일을 작성하는 것처럼 .dockerignore 파일을 작성하면 dockerfile로 image 생성시 컨테이너에 포함되지 않을 내용을 지정해둘 수 있다.

파일 이름은 .dockerignore

1
2
# 모든 경로의 md파일 제외
**/*.md


dockerfile

이미지로 만들 docker container 내용 작성

파일 이름은 dockerfile

1
2
3
4
5
6
FROM {컨테이너 base 이미지}
COPY {호스트 파일 경로} {컨테이너 위치할 경로}
RUN {이미지 생성 중 실행할 명령어}
WORKDIR {컨테이너 작업 위치}
EXPOSE {PORT}
ENTRYPOINT {컨테이너 실행 후 실행될 명령어}
  • EXPOSE 키워드는 몇번 포트를 컨테이너에서 사용한다는 문서화 용도로 사용된다.


dockerfile build

dockerfile을 build해서 image를 만든다.

1
docker build -t {IMAGE_NAME} {./path/dockerfile}


ex

dockerfile 작성

1
2
3
4
5
6
FROM nginx
COPY ./html /usr/share/nginx/html
WORKDIR /usr/share/nginx/html
RUN echo '<br><br><br>이것은 추가 텍스트' >> index.html
EXPOSE 99
ENTRYPOINT ["nginx", "-g", "daemon off;"]
  • ENTRYPOINT [“nginx”, “-g”, “daemon off;”]
    • container가 종료되지 않도록 nginx를 foreground로 실행

./html/index.html 내용 작성

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <title>Test</title>  
</head>  
<body>  
헬로우  
</body>  
</html>

dockerfile build

1
docker build -t study-web-test .

docker image 실행

1
docker run -d -p 99:80 study-web-test

실행 결과 확인

nginx를 실행하고 외부 포트를 99로 띄웠음으로
curl 명령어를 사용해서 응답 값을 확인

1
curl http://localhost:99

응답 값

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test</title>
</head>
<body>
헬로우
</body>
</html><br><br><br>이것은 추가 텍스트




참고한 사이트

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.