favicon Jay Lee DevLog

📚 목차

이제 본격적으로 컨테이너에서 실행할 애플리케이션을 넣어줄건데,

그러기 위해선 만들어둔 애플리케이션이 있어야 한다.

나의 경우는 react로 만들어둔 프로젝트 정리해둔 app이 하나 있어서

이를 이미지화 하려 한다.

애플리케이션은 굳이 본인이 만든게 아니어도,

docker hub 같은 곳에서 선택해서 사용해도 된다.

 

이제부터 Docker니 Github니 하면서 왔다갔다 할거라

점점 어려워질거다. 그래도 최대한 잘 정리해놓을 예정이다..

 


1. docker 설치하기

- docker key 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

 

- docker 저장소 추가

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

 

- docker 설치

sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io

 

- docker 서비스 실행

sudo systemctl start docker
sudo systemctl enable docker

 

- docker 권한 

sudo usermod -aG docker $USER

 

2. Docker 이미지 만들기

Docker 이미지를 만들기 위해선 Docker hub에 계정이 필요하다.

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

계정을 만든 후에 로그인 해준다.

docker login -u "만든 ID"

 

로그인 성공하면 위처럼 나온다.

 

이후 다시 Docker hub 사이트에 로그인 한 후에

아래의 작업이 필요하다.

 

* Repository 만들기

 

* Account settings -> personal access tokens -> Generate new token -> token 생성

 

 

 

 

이렇게 토큰을 만들면 된다.

이 토큰 값은 지금만 볼 수 있기 때문에 무조건 저장해둬야 한다.

다시 확인할 수 없다.

 

이후 토큰 값을 사용할 건데,

나 같은 경우는 Github를 사용하기 때문에 Github에 등록을 해줘야 한다.

 

* Settings -> Secrets and variables -> Actions -> Repository Secrets -> New Repository Secret 클릭

 

 

* Name에 DOCKERHUB_TOKEN, Secret에 복사한 토큰값을 넣어주면 된다.

 

* USERNAME도 해주자.

 

다 넣으면 아래처럼 추가한 모습이 보이면 된다.

 

여기까지 하고 나면 이제 애플리케이션을 Docker 이미지로 만들기 위한 작업을 해줘야 한다.

 

- 애플리케이션 root 경로에 Dockerfile 만들기

나 같은 경우 react 프로젝트가 react/pf에 작업을 해뒀기 때문에

root 경로는 /home/leejungjin/react/pf 가 된다.

해당 내용은 어떤 애플리케이션을 사용하냐에 따라 바뀌기 때문에,

본인에게 맞게 작성해야 한다. 나같은 경우는 react이기 때문에 이렇게 만들었을 뿐이다.

 

- 애플리케이션 root 경로에 .dockerignore 만들기

docker 이미지에 필요없는 파일들 걸러내는 파일이다.

이 파일 역시 애플리케이션에 따라 다 다르기 때문에

사람마다 다 다르다는 점 기억하자.

 

이제 docker에 로그인한 상태에서 빌드를 해주자.

sudo docker build -t jungjin-lee90/pf:latest .

나 같은 경우 빌드할 때 에러가 발생했었는데,

에러의 내용은 다음과 같다.

yurn이 설치가 안된다는 에러였다.

 

그래서 docker에 직접 접속해서 확인해봤는데,

sudo docker run --rm -it -v $(pwd):/app -w /app node:18 /bin/sh

docker에 접속한 후

yarn install을 수동으로 쳐보니 아래와 같은 내용이 나왔다.

 

결론은 node 버전을 올려야 했다.

지금은 18버전인데 20버전부터 호환이 된단다. 그래서 20으로 올려서 빌드했는데,

Dockerfile안에 버전을 바꿔주고, 기존 빌드 내역을 삭제해줘야 정상 동작된다.

docker builder prune -a # 기존 빌드 캐시 삭제

해서 지워주고 다시 빌드하면 된다.

sudo docker build -t jungjin-lee90/pf:latest .

정상적으로 빌드된 모습을 확인할 수 있다.

실행한 빌드 커맨드는 레포지토리를 따로 설정하지 않고 공식 레포지토리에 했는데,

이를 내가 만든 레포지토리로 변경해주자.

sudo docker tag jungjin-lee90/pf:latest jungjinlee90/github_jj:latest # jungjinlee90/github_jj는 위에서 만든 레포지토리

 

이제 레포지토리로 push 해주면 된다.

sudo docker push jungjinlee90/github_jj:latest

 

한번에 될 일이 없지..

문제는 위에서 보이듯이 권한 문제인데,

이를 해결하려면 docker login할 때,

password를 위에서 발급받은 token의 값으로 넣어주면 해결된다.

 

이후 다시 push 해보면

 

여기까지 하면 docker image 생성이 끝이다.

+ Recent posts

/ /

Contact

📧 dlwjdwls60@naver.com


블로그에 내용이 있으면 해당 글을 보여주며, 없으면 내용이 복사된 채로 ChatGPT로 연결됩니다.