관리 메뉴

피터의 개발이야기

Docker로 Nginx 웹서버 구동해보기 | Docker 파일복사(로컬 - 컨테이너) | Docker 컨테이너 unzip 설치하기 본문

DevOps/nginx

Docker로 Nginx 웹서버 구동해보기 | Docker 파일복사(로컬 - 컨테이너) | Docker 컨테이너 unzip 설치하기

기록하는 백앤드개발자 2023. 12. 7. 01:34
반응형

ㅁ 들어가며

 

 2015년에 발자취를 따라서라는 안드로이드 웹앱을 만들어 출시를 했었습니다. 당시 센차터치를 기반으로 반들어진 웹앱이라 웹에서도 구동이 가능한데요. 2015년 이후 업데이트를 하지 않아 이슈가 발생해서... 급하게 Nginx를 띄워 웹앱을 띄우게 되었습니다.

 

웹앱의 소스는 contents형태로 되어 있어 zip파일로 압축한 상태입니다. 이 파일을 nginx 컨테이너의 root에 옮기면 간단히 웹서비스를 구축할 수 있습니다.

 

 

ㅁ Nginx 설치

$ docker run -d --name webserver -p 80:80 nginx:latest

 

 

ㅁ 로딩 확인

$ docker ps

 

 ㅇ nginx의 기본페이지를 확인할 수 있습니다.

 ㅇ 기본 페이지를 원하는 컨텐츠로 교체를 해야합니다.

 

ㅁ 컨텐츠 교체를 위한 root path 확인

 

$ docker exec -it webserver bash
root@394d3afe91dd:/# cd etc/nginx/conf.d/
root@394d3afe91dd:/etc/nginx/conf.d# cat default.conf
~~ 생략 ~~
    location / {
        root   /usr/share/nginx/html;  # <=====================
        index  index.html index.htm;
    }
~~ 생략 ~~

 

ㅇ nginx의 핵심설정은 etc/nginx/conf.d/default.conf에 있습니다.

ㅇ 정확한 경로를 알기 위해 nginx 컨테이너로 들어가 default.conf을 직접 확인하였습니다.

ㅇ location은 처음 요청이 들어왔을 때 보여줄 초기 페이지의 경로와 index파일을 지정합니다.

ㅇ url상에 /이 마지막으로 접속을 해도 자동으로 index.html, index.htm로 정의된 파일을 보여줍니다.

 

ㅁ Docker 컨테이너로 파일 복사

# 로컬 -> 컨테이너 파일복사
$ docker cp pray.zip webserver:/usr/share/nginx/html/.

# 컨테이너 접속
$ docker exec -it webserver bash

# 파일전송 확인
root@394d3afe91dd:/# cd /usr/share/nginx/html/
root@394d3afe91dd:/usr/share/nginx/html# ls
50x.html  index.html  pray.zip

 

 

ㅁ unzip 설치여부 확인

ㅇ nginx 컨테이너에는 zip이 설치되어 있지 않습니다.

 

ㅁ unzip 설치

$ apt install unzip
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package unzip

 설치과정에서 에러가 발생하였습니다.

 

 

ㅁ 에러해결 추적

https://askubuntu.com/questions/161859/shows-unable-to-locate-package-unzip-error

 

 ㅇ 구글링을 통해 apt 업데이트 해결 방법을 모색하였습니다.

 

ㅁ apt 업데이트

 ㅇ apt 업데이트를 성공적으로 수행하였습니다.

 

ㅁ unzip 설치

  ㅇ 에러없이 성공적으로 설치가 완료되었습니다.

 

ㅁ unzip 설치 확인

ㅇ unzip -v 를 통해 프로그램의 버젼을 확인해 봅니다.

 

ㅁ 압축해제

$ unzip pray.zip

 압축을 해제합니다.

 

ㅁ contents 확인

 ㅇ 압축이 정상적으로 해제된 contents을 확인하였습니다.

 

 ㅇ 웹앱으로 개발되었던 소스를 커스터마이징하여 nginx를 통해 웹앱을 기동하였습니다.

 ㅇ 앱은 아니지만 웹을 통해 필요한 앱의 기능을 사용할 수 있습니다.

 

 

ㅁ 쇼컷방법: 압축해제된 폴더 통째로 복사하기

#로컬 폴더 파일확인
 ~/Downloads/test $ ls
contents pray.zip

#폴더 통째로 업로드
$ docker cp ./ webserver:/usr/share/nginx/html/test/.

# 컨테이너 접속 및 전송파일 확인
$ docker exec -it webserver bash
root@394d3afe91dd:/# cd usr/share/nginx/html/test/
root@394d3afe91dd:/usr/share/nginx/html/test# ls
contents  pray.zip

 ㅇ 글을 마무리하려고 할 때 문득 생각이 났습니다.

 ㅇ 압축하지 않고 그냥 통째로 올리면 되는데... 구지 컨테이너에 unzip을 설치하였는지...

 ㅇ 압축하지 않고 통째로 올리시면 됩니다.

반응형

'DevOps > nginx' 카테고리의 다른 글

[nginx] Nginx의 허용IP와 Proxy_pass 설정  (0) 2024.10.26
Nginx에서 특정 URL만 허용하는 방법  (0) 2024.09.03
Comments