1.Ubuntu에서 파일다운받기
curl -O https://storage.skala-ai.com/storage/edu/code/ywyi/250721/my-first-app.tar

tar파일을 다운받으면 빨간색 tar파일이 생성된다
2.압축해제
tar -xvf my-first-app.tar


1.
#default.conf
라인별 의미
- listen 80;
서버가 80 포트(HTTP) 로 요청을 받음. - location /sk000 { ... }
URL이 /sk000로 시작하는 요청을 이 블록에서 처리.
예) /sk000/app.js, /sk000/, /sk000/foo/bar - alias /usr/share/nginx/html/;
alias는 location 접두어를 이 경로로 치환해서 파일을 찾음.
즉 /sk000/app.js → /usr/share/nginx/html/app.js 를 읽음. - 팁: location이 /sk000라면 보통 /sk000/처럼 슬래시를 붙이는 게 안전해요(아래 참고).
- index main.html index.html;
디렉토리 요청일 때 기본 문서로 main.html → 없으면 index.html을 찾음.
예) /sk000/ → /usr/share/nginx/html/main.html 없으면 index.html. - try_files $uri $uri/ /default.html;
- 요청한 정확한 파일 시도 ($uri)
- 디렉토리로도 시도 ($uri/) → 디렉토리면 위의 index 규칙 적용
- 둘 다 없으면 /default.html로 내부 리다이렉트 (SPA fallback 같은 용도)
만약 default.html이 alias 폴더에 있다면 **/sk000/default.html**로 쓰는 게 안전합니다. - expires -1;
Expires 헤더를 과거 시점으로 설정해 캐시 사용 안 함 의미. - add_header Cache-Control "no-store, no-cache, must-revalidate";
브라우저 캐시를 막기 위한 강한 지시. 개발 중 변경사항 즉시 반영할 때 유용. - add_header Pragma "no-cache";
HTTP/1.0 호환용 추가 비캐시 지시.
라고 지피티가 이야기했는데 일단 중요한건, 내가 알고있는건
index main.html index.html;
여기있는 index를 수정해야, docker가 어느 파일을 참조할지 알려주기때문에, 해당 줄을 수정해야한다

이처럼 파일을 수정해줘야한다
2.
#DockerFile
라인별 설명
- FROM nginx:alpine
가벼운 Alpine 리눅스 기반의 공식 Nginx 이미지를 사용합니다. - COPY default.conf /etc/nginx/conf.d/
당신의 커스텀 서버 설정(default.conf)을 Nginx의 conf.d 폴더에 넣습니다.- 동일 파일명(default.conf)이면 기존 것을 덮어씌우는 효과가 나지만,
- 다른 이름이라면 기존 /etc/nginx/conf.d/default.conf와 포트 충돌이 날 수 있어요(두 server가 listen 80).
- EXPOSE 80
컨테이너가 80 포트로 서비스한다는 “메타정보”(실제 포트 개방은 -p 옵션으로 매핑). - CMD ["nginx", "-g", "daemon off;"]
포그라운드로 Nginx 실행.
사실 공식 이미지 기본 CMD와 동일해서 이 줄은 생략해도 됩니다.

Docker Image를 Build하고 Run 시킬때, 어느 경로를 통해서 Build하고 Run시킬껀지 명시해야한다
어떤 파일을 사용할건지 default.conf 파일에서 명시하였으므로, (html 파일은 사진이 많아서 하나의 폴더로 묶었똥)
COPY html/ /sur/share/nginx/html
(내가 사용할 파일) / Docker에서 지정한 경로
3.
docker build -t my-nginx:1.0 .

# 1) 현재 폴더(.)를 빌드 컨텍스트로 해서 이미지 생성
-이걸 실행시키는 디렉토리 안에 Docker file이 존재해야한다
docker run --rm -p 8080:80 --name my-nginx my-nginx:1.0
--rm을 해주게 되면 docker run을 해주고, 실행을 취소하면 container에서도 삭제하겠다는 의미에 해당한다

이후 해당 주소로 들어가면
http://localhost:8080/sk106/

내 홈페이지가 로컬에서 동작하는 것을 확인할 수 있다.

주소를 저렇게 해주는 이유는 docker-build.sh에 이와같이 선언했기 때문이다
docker push 방법1
기본 공식: docker tage 원래파일이름 바꿀파일이름

Container를 보면 my-nginx가 실행되는 것을 볼 수 있고, 잘 동작하는 것을 확인했으니, 이후에 Docker push를 해줘야한다
Docker build만 하여서 image를 생성하고 run을 통해 내 로컬에서 동작하는 것을 확인하였으므로,
해당 이미지를 배포하기 위해서 docker push가 필요하다

docker-push.sh를 보게되면 이와같이 되어있따
docker tag를 통해 my-nginx파일 이름을 바꿔줘야한다
이렇게 뜨는데 image이름을 sk106-posts-get.amd64:1.0 이라는 것을 기대하고 ./docker-push.sh를 사용하여 해당 image를 변경하는거네요
docker tag my-nginx:1.0 sk106-posts-get.amd64:1.0
root@BOOK-8FCGNUSNRC:~/my-first-app# docker tag my-nginx:1.0 sk106-posts-get.amd64:1.0
실행하게되면 my-nginx라는 폴더명이 바뀌며 복사되는것을 볼 수 있습니당
./docker-push.sh
저는 이전에 이미 push를 해놔서 이렇게 뜨는데 처음 실행시키면 막 화살표 뜨면서 다운됩니다
docker push 방법2
이름바꿔주기
기본 공식: docker tage 원래파일이름 바꿀파일이름
docker tag my-nginx:1.0 sk106/my-nginx:1.0

docker tag sk106/my-nginx:1.0 amdp-registry.skala-ai.com/skala25a/sk106-posts-get.amd64:1.0
이렇게하면 이제 kuber와 연결시킬 준비 끄읏
Deploy

deploy폴더로 이동하면 이와같이 파일들이 있당
1.deploy.yaml파일
Kubernetes Deployment 매니페스트이다
쉽게 말하면 “쿠버네티스가 어떤 컨테이너를 몇 개 띄우고, 어떻게 관리할지를 정의하는 설계도”입니다.
- skala-practice 네임스페이스에 배포됨.
- **sk106-posts-get**라는 앱을 Pod 1개로 실행함.
- 컨테이너는 amdp-registry.skala-ai.com/skala25a/sk106-posts-get.amd64:1.0 이미지를 사용.
- 이건 사설 레지스트리에 있는 이미지라, Pull 권한이 필요함.
- 항상 최신 이미지를 다시 Pull하도록 (imagePullPolicy: Always) 설정됨.
- Prometheus가 모니터링할 수 있도록 메타데이터(annotations) 를 달아둠.
- scrape: true → 모니터링 대상
- port: 8080 → 수집할 포트
- path: /prometheus → 수집 경로
- update: update1000 → 이 값만 바꿔도 Deployment 롤링 업데이트를 강제로 유도할 수 있음.
- 쿠버네티스가 파드 상태를 감시해서 죽으면 다시 띄움.
1.
kubectl apply -f deploy.yaml
2.
kubectl apply -f service.yaml
솔지기 뭔파일인지 모르겠음
3.
kubectl get pods -n skala-practice

나는 106으로 만들어서 내꺼를 찾아서
4.
kubectl port-forward pod/sk106-posts-get-68ccf5b996-9zd2f 8080:80

이렇게하고
https://frontend.skala25a.project.skala-ai.com/sk106/
나의 프로필
frontend.skala25a.project.skala-ai.com
다른 사람도 내 파일에 접속할수 있는 환경 구축 완룡~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'LLM' 카테고리의 다른 글
| [Kubernetes,K8s]쿠버네티스2 (3) | 2025.08.14 |
|---|---|
| [Kubernetes,K8s]쿠버네티스 (5) | 2025.08.13 |
| [7]JavaScript (7) | 2025.08.11 |
| [6]CSS (3) | 2025.08.11 |
| [5]HTML (3) | 2025.08.08 |