이번에는 도커 이미지 생성을 자동화해보기로 했습니다.
그 전까지는 수동으로 했었으니까요!
필요한 것은 Dockerfile과 이미지 빌드 명령어 입니다.
FROM [--platform=<platform>] <image> [AS <name>]RUN <command>ENTRYPOINT ["executable", "pram1", "pram2"]docker build [OPTION] PATH|URL|-
# 베이스가 될 이미지를 가져옵니다.
FROM httpd:latest
# 이 명령어를 실행합니다.
# index.html을 echo 뒤에 있는 내용으로 치환합니다.
RUN echo "<html><body><h1>Docker build Test</h1></body></html>" > /usr/local/apache2/htdocs/index.html
# 시작점은 여기서 시작합니다.
# 컨테이너가 실행될 때 서버가 구동될 수 있도록 합니다.
ENTRYPOINT /user/local/bin/httpd-foreground
도커파일이 있는 위치에서 빌드를 시작합니다.
docker build -t my_httpd:0.2 .
0.1을 만들어봤으니까 이번에는 0.2라고 붙여봤습니다. 현재 디렉토리 내에서 동작해야 하니까 현재 디렉토리 내임을 의미하는 .을 붙입니다.

새로운 도커 이미지가 빌드되었습니다.

확인해 보니 0.2 버전이 생성되었음을 확인할 수 있었습니다.
그럼 빌드가 잘 되었으니 컨테이너로 실행이 잘 되는지도 확인해 보겠습니다.
maestro@jeonghaelim-ui-MacBookAir example % docker run -p 9000:80 my_httpd:0.2
/bin/sh: 1: /user/local/bin/httpd-foreground: not found
어...? 뭐가 문제지...?
하고 확인해 보니 제가 오타를 냈었네요 ㅠㅠ 다시 빌드합니다.
빌드할 때는 똑같은 이름으로 빌드가 가능합니다. (아마도 오버라이트 되는 것 같습니다.)

entrypoint로 지정했던 httpd-foreground가 실행이 되면서 서버도 동작하고 있는 걸 확인할 수 있었습니다.

새로고침을 해보니 제가 치환했던 index.html 파일로 제대로 나오고 있는 걸 확인할 수 있었습니다. (와!)
도커에 올리기 위해 로그인을 합니다.

더 안전하게 로그인하고 싶으면 access token 만들라는 거 같은데 일단 스루합니다...
docker tag my_httpd:0.2 jeonghaerim/my_httpd:0.2
올릴 도커 이미지에 태그를 붙입니다.
그리고 docker push를 통해 docker hub에 올립니다.

로그인이 잘 되어 있는 상태이기 때문에 별 문제 없이 올라갔습니다.

도커 허브 내에서도 제가 올린 이미지가 있음을 확인할 수 있었습니다.

로컬에서 도커 이미지도 전부 지우고 다시 받아 보니 잘 받고 서버까지 잘 실행하고 있음을 확인할 수 있었습니다.
dockerfile을 잘 작성하고 사용하면 이미지도 쉽게 빌드할 수 있고 컨테이너도 쉽게 만들 수 있다는 걸 알 수 있었습니다!