❗이미지 만들기 + test용 Dockerfile 만들기
이미지화하고자 하는 폴더 하위로 이동 후 아래의 작업을 실시한다!
vim Dockerfile
# base image 를 ubuntu 20.04 로 설정합니다.(도커허브 확인)
FROM ubuntu:20.04
# apt-get update 명령을 실행합니다.
RUN apt-get update
# DOCKER CONTAINER 가 시작될 때, "Hello" 를 출력합니다.
CMD ["echo", "Hello"]
docker build -t my-image:v1.0.0 .
위에서 작성한 Dockerfile을 기반으로 이미지를 빌드하기 위한 명령어이다.
.을 하면 도커파일을 찾고 이를 기반으로 빌드 후 이미지가 생성된다.
생성된 이미지의 이름은 im-image이며 v1.0.0이 태그가 된다.
docker images
docker run my-image:v1.0.0
생성된 이미지를 확인 후 이미지 이름과 태그를 함께 입력하여 컨테이너를 실행한다!
❗실제 서비스에 적용해 보기
위에선 Dockerfile이 어떻게 작동하는지 보기 위한 테스트였고 실제 적용을 위해 새롭게 Dockerfile을 작성한다.
vim Dockerfile
FROM python:3.8
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
COPY . .
EXPOSE 5000
CMD [ "python3", "-m" , "flask", "run", "--host=0.0.0.0"]
vim requirements.txt
flask
컨테이너 실행 시 설치가 필요한 모듈의 이름을 모아둔 파일 생성하기 위해 requirements.txt를 만들고,
현재 이 프로젝트에선 flask만 사용할 거라 이것만 작성
현재까지 우분투에서 작업한 내용을 원격 저장소에 업데이트 하기 위해 커밋을 해준다.
이 부분 원격에 넣는 거라 빌드 과정에선 빠져도 상관 없지만 이후 로컬에서 사용하기 위해 수행했다!
docker build -t flaskapp:v1.0.0 .
docker run -d -p 5000:5000 --name flaskapp:v1.0.0
또는
docker run -d -p 5000:5000 이미지ID
firefox에서 localhost:5000으로 접근하면 컨테이너가 잘 실행된 것을 볼 수 있다!
docker push 사용자이름/도커리포지토리:태그
도커 허브에 생성한 리포지토리에 빌드한 이미지를 업로드해서 다른 곳에서도 사용할 수 있게 한다.
❗로컬로 pull해서 실행해보기
우분투에서 도커 허브로 올린 이미지를 윈도우에서 pull해서 실행하기 위한 실습이다.
docker pull 사용자이름/도커리포지토리:태그
docker run -d -p 5000:5000 이미지ID
docker ps -a
컨테이너가 잘 실행 중인지 확인할 수 있다.
로컬에서 localhost:5000으로 접속하면 마찬가지로 잘 실행되는 것을 볼 수 있다!
❗깃허브 액션 적용하기
리포지토리에서 action 클릭 후 python application을 선택한다. 이 경우엔 각자 맞는 프로젝트 환경을 선택하면 된다!
위 상태로 입력 후 도커를 실행하려먼 로그인 정보가 필요하기 위해 변수 처리된 부분을 확인하고 넘어간다.
settings > Secrets and variables > New repository secret을 선택 후
DOCKER_USERNAME: dockerhub의 username / DOCKER_PASSWORD: dockerhub의 access token
이 두가지를 추가해 준다.
위의 cicd 스크립트를 보면 master branch에 push되면 cicd를 진행하기 때문에 이처럼 빌드된 것을 볼 수 있다.
(하지만 현재 AWS와 같은 서버는 없기 때문에 배포는 되지 않은 상태이다)
'🔻DevOps > Docker' 카테고리의 다른 글
[Docker] 도커 access token 발급 (0) | 2024.08.04 |
---|---|
[Docker] SpringBoot + Docker + Github Action CICD 배포하기 (0) | 2024.08.04 |
[Docker] 우분투에 도커 설치 후 명령어 실습 (0) | 2024.07.05 |
[Docker] Docker 명령어(조회, 정지, 시작) (0) | 2022.12.26 |
[Docker] Java11 + Spring Boot + AWS EC2 프로젝트 배포하기 (0) | 2022.12.24 |