docker로 Laravel 개발 환경 구축 2편 (NGiNX 컨테이너 생성)

포스트 썸네일 이미지

도커docker를 이용해서 라라벨Laravel 개발 환경을 구축하는 방법을 연재하는 중이다.

지난 포스트에서는 php 컨테이너를 생성했고, 오늘의 포스트에서는 NGiNX 컨테이너를 생성해 보겠다.




이전 포스트




docker-compose.yml 파일 수정 (코드 추가)


docker-compose.yml

version: '3.8'

services:
  # php Service
  app:
    #생략, 이전 포스트 참고

  # NGiNX Service
  web:
    build: #php 컨테이너(이전 포스트)와 같은 내용이므로 설명 생략
      context: .
      dockerfile: ./docker/nginx/Dockerfile
    ports: #호스트 측과 컨테이너 간의 포트 번호 대응을 설정한다.
      - ${WEB_PORT}:80 #호스트 포트 번호 : 컨테이너 포트 번호 (호스트 포트 번호는 환경 변수로 설정했다.)
    depends_on: #서비스의 시작 순서를 제어한다.
      - app #app → web의 순서로 기동하도록 지정하고 있다.
    volumes: #여기도 php 컨테이너와 같은 내용이므로 설명 생략
      - ./src/:/var/www/html




posts와 관련된 내용은 이 영상을 참고하도록 하자.


${WEB_PORT}는 환경 변수다.

환경 변수는 docker-compose.yml 파일과 같은 디렉터리에 있는 .env 파일에서 가져올 것이다.





.env 파일 생성


.env

WEB_PORT= #넣고 싶은 포트 번호를 넣는다. 보통은 80

.env 파일을 만들어서 이렇게 변수의 값을 넣고 저장한다.




.gitignore 파일 생성


혹시 이대로 깃허브GitHub에 commit을 하면 깃허브에 .env 파일이 노출된다.

.env 파일은 앞으로 민감하고 중요한 정보들을 저장할 파일이다.

.gitignore 파일은 버전 관리에서 제외할 파일을 지정하는 파일이다.

이 파일을 .env 파일이 있는 디렉터리에 만든다.


.gitignore

.env
.gitignore

.gitignore 파일을 만들어서 이렇게 쓰고 저장한다.

.gitignore를 넣으면 .gitignore 파일도 깃허브에 업로드되지 않는다. 빼도 상관없다.




NGiNX의 Dockerfile 생성


cd docker && mkdir nginx && cd nginx && touch Dockerfile default.conf && cd ../..

ubuntu에서 이 명령어를 실행하면 docker 디렉터리 안에 nginx 디렉터리를 생성한 다음, 그 안에 Dockerfile과 default.conf 파일까지 만들어준 다음에 다시 원래의 디렉터리로 돌아올 것이다.




Dockerfile

FROM nginx:1.26.3

ENV TZ=UTC

# nginx config file
COPY ./docker/nginx/*.conf /etc/nginx/conf.d/

WORKDIR /var/www/html

nginx 디렉터리 안에 생성된 Dockerfile 안에 이렇게 코드를 넣고 저장하자.





default.conf 파일 생성


default.conf

server {
    listen 80;

    root /var/www/html/public;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Content-Type-Options "nosniff";

    index index.php index.html index.htm;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass app:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

그리고 같은 디렉터리 안의 default.conf 파일도 이렇게 저장한다.

코드의 작성은 이것으로 끝이다.

깃허브에 commit을 한다면 이 단계에서 해도 괜찮다.




NGiNX 컨테이너를 생성하자


docker-compose up -d --build

ubuntu에서 이 명령어를 실행해서 이미지를 빌드하고 컨테이너를 기동 시킨다.


docker-compose ps

이 명령어를 사용하여 실행 중인 컨테이너를 확인해보자.

app과 web 컨테이너가 실행 중인 것이 보인다면 성공.




docker-compose exec web nginx -v #설치된 NGiNX의 버전을 확인한다.
docker-compose exec web bash #컨테이너 안으로 들어가서
pwd #현재의 디렉터리를 확인해 보자. '/var/www/html'이 나오면 정상.
exit #컨테이너 밖으로 나오자.

ubuntu에서 이 명령어들을 하나씩 실행해서 모든 것이 잘 설치되었는지 확인해 보자.





마지막 테스트


mkdir src/public #src 디렉터리 안에 public 디렉터리를 만든다.
touch src/public/test.php #그 안에 test.php 파일을 만든다.

이제부터는 NGiNX 웹 서버가 잘 동작하는지 확인해 보자.

이 명령어들을 실행해서 public 디렉터리와 test.php 파일을 만든다.




<?php 

echo 'test.php입니다.';
phpinfo();

test.php를 VSCode로 다음과 같이 수정하고 저장한다.




test.php에 접속한 화면

http://localhost/test.php

이제 웹브라우저로 이 URL에 접속하면 웹 서버가 제대로 작동하는지 확인할 수 있다.

[ctrl+F]로 'nginx'를 검색해서 NGiNX서버를 사용하고 있는지 확인도 해 보자.




rm -rf src/*

확인이 끝났다면 파일을 삭제하자.




다음 포스트

이 글이 도움이 됐거나 유익했다면 스크롤을 조금만 더 내려서 댓글을 남겨주세요. (비로그인도 가능합니다!)
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊

지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.

댓글 쓰기

0 Comments

문의하기 양식