dockerfile을 github public일때만 정상적으로 빌드할 수 있다.
그래서 private일때도 빌드할 수 있게 설정하자.

ec2에서 깃 클론을 받으면, 이렇게 뜨는데 물론 rsa 키를 등록하지 않아도 아이디, 토큰 등록으로 private repo에서 클론이 가능하다.
근데, docker에서 rsa 를 통해 클론할 방법이 있으니 해보자.
ssh-keygen -t rsa -b 4096 -C "jihoon1234@gmail.com"
rsa 키를 제너레이트하는데, 비트 수가 4096이라는 뜻이다.(default=2048)
그리고 이메일 주소를 넣어준다.
EEnter file in which to save the key (/home/ubuntu/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
어디에 저장할건지, 추가적인 암호화를 할건지, 하라는데 다 엔터 누르고 넘어갔다.
Your identification has been saved in /home/ubuntu/.ssh/id_rsa
Your public key has been saved in /home/ubuntu/.ssh/id_rsa.pub
The key fingerprint is:성공하면 이렇게 뜬다.
cd .ssh/
쳐서 디렉토리로 들어가면
authorized_keys  id_rsa  id_rsa.pub파일이 생성되어있다.
id_rsa.pub : 공개키 -> 이걸 github에 넣어야함
id_rsa : 개인키
cat id_rsa.pub
이 명령어로 텍스트를 출력하고 그 출력된 것을 깃헙에 등록한다.

그럼 이제 텍스트를 넣어준다.
그럼 ssh key 등록이 완료되었다.

git clone 복붙
하면 되는데, 이것도
are you sure you want to continue connecting?이 뜬다.
이것도 안하려고 이걸 하는거니까. 추가할 것이 있다.
touch /home/ubuntu/.ssh/known_hosts
ssh-keyscan github.com >> /home/ubuntu/.ssh/known_hosts
우선 해당 디렉토리에 파일을 만들거라는 뜻이다.
keyscan으로 복사를 해와서 해당 디렉토리에 넣어준다는 뜻이다.
cat ~/.ssh/known_hosts
cat : 출력 명령어
~/. : home에서 하나 들어간 디렉토리 위치
git clone ssh 주소
이제 그럼 아무 묻는것 없이 바로 클론이 된다.
이걸 도커파일 안에 작성해줄 것이다.

파일질라로 도커파일을 넣어준다.
도커파일은 아래와 같이 수정했다.
# 파이썬 이미지 다운로드
FROM python:3.9.0
# github private ssh 접속 / docker는 root, aws ec2는 ubuntu 서로 다름
RUN mkdir /root/.ssh/
# 호스트의 파일을 안에 복사함
# 앞 : 호스트 서버의 경로 /  뒤: 컨테이너 안의 경로
#  이미지를 가지는 사람은 private key 또한 입수가 가능함
ADD ./.ssh/id_rsa /root/.ssh/id_rsa
# 권한설정 추가 : 소유자에만 읽기쓰기 권한을 주는것으로 변경한거
RUN chmod 600 /root/.ssh/id_rsa
#  디렉토리를 만들고
RUN touch /root/.ssh/known_hosts
# 복사하는 과정 추가
RUN ssh-keyscan gihub.com >> /root/.ssh/known_hosts
WORKDIR /home/
# 캐시된 데이터를 변경사항 추가해줌 - 의미없는 명령어임
RUN echo "testing1111"
# 깃 저장소와 파일 디렉토리 이름이 같아야 쉬움
RUN git clone ssh 클론주소
# root 위치 , pragmatic : 깃헙 repo 이름
WORKDIR /home/pragmatic/
# 라이브러리 다 설치 -> 컨테이너 안이니까 가상환경 불필요
RUN pip install -r requirements.txt
RUN pip install gunicorn
# 우분투는 mysql이 없으니까 추가로 설치해줘야함
RUN pip install mysqlclient
# 서버 포트 주소
EXPOSE 8000
# 런서버
# CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
# CMD ["gunicorn", "프로젝트명.wsgi", "--bind", "0.0.0.0:8000"]
# 마이그레이트와 런서버를 동시에 돌리게.
# manage.py가 local로 되어있는데, local -> deploy로 바꾸는 역할도 동시에 함 and gunicorn도 deploy 설정 추가해줘야함
# 세팅을 항상 deploy로 해줘야함
CMD ["bash", "-c", "python manage.py collectstatic --noinput --settings=프로젝트명.settings.deploy && python manage.py migrate --settings=프로젝트명.settings.deploy && gunicorn 프로젝트명.wsgi --env DJANGO_SETTINGS_MODULE=프로젝트명.settings.deploy --bind 0.0.0.0:8000"]
그럼 이제 ubuntu에서 실행한다
sudo docker image build -t django_test_image:6 .
관리자명령어로 이미지를 빌드한다.
6번 이미지를 새로 만들어주었다.
Sending build context to Docker daemon  26.34MB
Step 1/15 : FROM python:3.9.0
 ---> 0affb4652fc0
Step 2/15 : RUN mkdir /root/.ssh/ssh를 통해 자동으로 빌드가 되는것을 알 수 있다.
admin createsuperuser 만들기
방법1. portainer로 접속

portainer 컨테이너에서 >_ 버튼을 누른다.

python manage.py createsuperuser --settings=프로젝트명.settings.deploy
방법2
.pem 파일 있는곳에서 ssh -i .pem ubuntu@ip주소
로그인해서 해당 디렉토리로 이동
거기서 
python manage.py createsuperuser --settings=프로젝트명.settings.deploy
로 admin 계정 생성하면 됨
끝