Q&A

책을 따라하다가 막히는 부분이 있나요?
질문을 남겨주세요.

안녕하세요 질문이 있습니다. nginx쪽에서 계속 오류가 나네요...

3 years, 8 months ago

wan_l_i_n wan_l_i_n

nginx_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/

nginx_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh

nginx_1  | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf is not a file or does not exist

nginx_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh

nginx_1  | /docker-entrypoint.sh: Configuration complete; ready for start up

nginx_1  | 2021/02/04 11:32:58 [emerg] 1#1: "location" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:15

nginx_1  | nginx: [emerg] "location" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:15

db랑 웹은 잘 작동이 됩니다

FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d


sungyong
sungyong   3 years, 8 months ago

안녕하세요. 몇 페이지 쯤에서 에러가 났는지 알려주실 수 있나요? 

관련 파일도 같이 보여주시면 도움이 됩니다. 

Updated: Feb. 5, 2021, 1 a.m.

wan_l_i_n
wan_l_i_n   3 years, 8 months ago

592페이지 Nginx적용하기 파트에서 오류가 났습니다..

docker-compose up을 하니까 본문에 오류메시지가 나타났어요. 그리고 도커를 열어보면 web이랑 db는 작동중인데 nginx만 exited(1) port 80 이라고 뜨네요.

FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d



upstream do_it_django {
    server web:8000;
}

server {
    listen 80;
    location / {
        proxy_pass http://do_it_django;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        alias /usr/src/app/_static/;
    }

    location /media/ {
        alias /usr/src/app/_media/;
    }
}


version'3'
#도커를 최신 버전으로 사용하겠다는 의미. 별다른 이유가 없으면 3으로 설정하면 된다.
services:
  nginx:
    build./nginx
    volumes
      - static_volume:/usr/src/app/_static
      - media_volume:/usr/src/app/_media
    ports:
      - '80:80'
    depends_on:
      - web
  web#web이라는 이름의 서비스 하나만 실행한다.
    build. #현재 폴더를 build합니다. 앞에서 Dockerfile이 현재 폴더에 있으므로 이 팔이르을 이용해 컨테이너 이미지를 만든다.
    commandgunicorn wanje1.wsgi:application --bind 0.0.0.0:8000 #웹서버 소프트웨어인 Nginx를 사용한다. 이 서버와 장고를 연결하기 위해
    #필요한 WSGI중 하나인 Gunicorn을 사용하겠다.
    volumes#volumes로 로컬 컴퓨터의 폴더와 도커의 폴더를 연결한다. 여기서는 현재 폴더를 /usr/src/app/폴더와 연결한다.
      - static_volume:/usr/src/app/_static
      - media_volume:/usr/src/app/_media
      - ./:/usr/src/app/
    expose:
      - 8000
    env_file
      - ./.env.prod #env에서 .env.prod(배포용 환경설정파일)로 바꾼다
      # 지금까지는 웹 페이지에 문제가 생기면 나타나는 오류페이지에서 메시지를 읽고 이를 디버깅하면서 웹 사이트를 만들었다.
      # 오류 페이지가 다른사람에게 보이지 않도록 settings.py 에서 관리되던 요소 일부를 개발환경.env.dev와 배포환경.env.prod에서 나누어 관리하려고 한다.
      # 지금은 배포할단계는 아니므로 .env.dev만 지정한다.이렇게 env_file을 따로 명시하면 settings.py를 활용할수 있게 setting.py 를 수정만하면된다.
      # pg 566 567참조
    depends_on#web 컨테이너는 db컨테이너가 실행된 이후에 시작해야 된다는 의미이다.
      - db

  db:
    imagepostgres:12.0-alpine #db라는 이름의 컨테이너는 postgres를 실행하기 위해 만든거다. 이미지는 도커에서 공식으로 제공하는 postgres:12.0-alpine을 사용한다.
    volumes#volumes을 설정해서 컨테이너 실행이 중단되더라도 데이터베이스의 내용이 사라지지 않게 한다
      - postgres_data:/var/lib/postgresql/data/
    env_file
      - ./.env.prod.db
volumes#volumes을 설정해서 컨테이너 실행이 중단되더라도 데이터베이스의 내용이 사라지지 않게 한다
  postgres_data:
  static_volume:
  media_volume:

Updated: Feb. 5, 2021, 11:53 a.m.

wan_l_i_n
wan_l_i_n   3 years, 8 months ago

다행히도 cmder로 실행하니까 되네요 ㅠㅠ 그전에는 파워쉘로 실행했었거든요 감사합니다. 

Updated: Feb. 5, 2021, 1:52 p.m.

Leave a Comment:
목록보기
Search
  • 자유게시판
  • Q&A