16강에서부터 이어진 내용이므로 ex03/webapp, ex03/conf 디렉토리 생성되어있는 것을 가정한다.
1. Dockerfile 작성
1 FROM nginx
2
3 #COPY webapp /usr/share/nginx/html
4 #COPY conf/nginx.conf /etc/nginx/conf.d/default.conf
5
6 ENTRYPOINT ["nginx", "-g", "daemon off;"]
아직 webapp과 conf에 들어갈 내용이 없으니까 일단 주석 처리 해주자.
2. Dockerfile build 및 컨테이너 실행
docker build -t nginx-server ./
docker run -d -p 8080:80 --name some-nginx nginx-server
3. default.conf 내용 가져오기
우리가 건드려야할 conf파일을 확인 후 base될 내용을 가져오자.
docker exec -it [CONTAINER ID] bash
실행한 컨테이너의 터미널에 접속한다.
cd /etc/nginx/conf.d
컨테이너의 터미널에 접속했으면 nginx의 default config파일이 있는 곳으로 이동한다.
cat default.conf
우리는 default.conf를 base로 하여 설정을 건드려야하므로 해당 내용을 복사해서 만들어둔 호스트의 conf 폴더로 가져오자.
server {
listen 80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
해당 내용을 복사 → 컨테이너 터미널 종료 → HOST의 conf디렉토리에 nginx.conf 파일을 생성한 후 복사한 내용을 붙여넣기한다.
이전 15 RUN명령어 강의에서 기본으로 제공되는 html을 바꾸기 위해서 ./index.nginx-debian.html 이렇게 변경하였는데 그때는 config 파일에 다르게 설정되어있어있어서 그렇다고 하심.
4. 기본페이지, 에러페이지 변경하기
우리가 참고할 설정들은 기본 location과 error가 발생했을 때 보여줄 location 이다.
해당 설정을 위해서는 설정파일의 7,17 번째 줄을 변경하면 된다.
에러페이지용 index는 17번째 줄을 보면 50x.html 이름으로 설정되어있고, 기본 location은 index.html로 설정되어있으므로 webapp에 index.html과 50x.html을 생성해준다. (둘다 경로는 /usr/share/nginx/html 로 동일한 것을 볼 수 있다.)
<h1>Error Page!!</h1>
50x.html
<h1>Welcome Nginx!!</h1>
index.html
5. Dockerfile 수정 및 재빌드
주석 처리해둔 COPY 명령어 부분을 주석해제 한 후 빌드를 다시 해주자.
1 FROM nginx
2
3 COPY webapp /usr/share/nginx/html
4 COPY conf/nginx.conf /etc/nginx/conf.d/default.conf
5
6 ENTRYPOINT ["nginx", "-g", "daemon off;"]
Dockerfile
docker build -t nginx-server:2.0 ./
빌드
docker run -d -p 8080:80 --name some-nginx nginx-server:2.0
실행
버그발생
docker ps -a 확인 결과 컨테이너가 강제 종료되는 현상
docker logs [CONTAINER ID] : 명령어로 로그를 보니 아래와 같은 로그가 출력되어있었다.
conf에 있는 nginx.conf 에 오타가 나와있어서 수정함!
다시 빌드해서 다시 실행시켜 보면 설정한 대로 동작하는 것을 볼 수 있다.
아직 50x 에러를 발생시킬 수 없어서 보여줄 수가 없다.
기본 페이지는 설정한 대로 제대로 뜬다.
컨테이너에 터미널로 접속해서 확인해봐도 설정한대로 잘 복사되었다.
설정파일도 제대로 복사된것을 알 수 있다.(/etc/nginx/conf.d/default.conf)
'코딩이야기 > Docker' 카테고리의 다른 글
도커 입문 19강 - docker file step7 - nginx 게이트웨이 사용하기 (0) | 2024.07.01 |
---|---|
도커 입문 18강 - docker file step6 - nginx를 로비 서버로 활용하기 (0) | 2024.07.01 |
도커 입문 16강 - docker file step4 - nginx 내부구성 알아보기 (0) | 2024.06.28 |
도커 입문 15강 - docker file step3 - RUN 명령어 (0) | 2024.06.26 |
도커 입문 14강 - docker file step2 - Entrypoint와 Workdir (0) | 2024.06.18 |