docker - compose 배치 django + nginx + mysql 프로젝트

4119 단어 Docker
1. 프로젝트 구조 [root@mail docker-feiyu]# tree `-- dokcer-feiyu      |-- docker-compose.yml      |-- nginx      |   |-- Dockerfile      |   `-- nginx.conf      |-- User    |-- Dockerfile    |-- manage.py    |-- requirements.txt    |-- static    |-- users    |-- db.sqlite3    |-- gunicorn.conf    |-- media    |-- start.sh    |-- templates    `-- User 2, nginx 부분 1, Dockerfile 먼저 작성 [root@mail nginx]# vi Dockerfile
FROM nginx
#      
EXPOSE 80 8000
#RUN rm /etc/nginx/conf.d/default.conf
ADD nginx.conf  /etc/nginx/conf.d/
RUN mkdir -p /usr/share/nginx/html/static
RUN mkdir -p /usr/share/nginx/html/media

2. nginx 프로필 준비 [root@mail nginx]# vi nginx.conf
server {
     listen      80;
     server_name localhost;
     charset     utf-8;
     error_log /tmp/nginx_error.log;
     access_log /tmp/nginx_access.log;
     location /media {
         alias /usr/share/nginx/html/media;
     }
     location /static {
         alias /usr/share/nginx/html/static;
         }
     location / {
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $http_host;
         proxy_redirect off;
         proxy_pass http://web:8000;
     }
}

nginx 설정 에 대해 다음 과 같은 두 가 지 를 주의해 야 합 니 다. 매우 중요 합 니 다.    location     정적 파일 설정, nginx 가 지정 한 정적 파일 원본 디 렉 터 리 는 / usr / share / nginx / html / 이 며, 이 디 렉 터 리 의 정적 파일 은 웹 용기 에서 volumes 를 통 해 동기 화 됩 니 다.그래서 잠시 만 요. docker - compose 는 아주 중요 합 니 다.    proxy_pass     호스트 에 직접 설정 하 는 것 과 는 다 릅 니 다. host 는 구체 적 인 IP 로 쓸 수 없습니다. 서비스 이름 을 쓰 려 면 웹 서비스의 name 을 쓰 십시오. 웹 은 docker - compose 에서 정의 하 는 웹 응용 프로그램의 service 이름 입 니 다.뒤에 docker - compose 설정 을 쓸 것 입 니 다.
3. django 부분 1, Dockerfile 작성 [root@mail User]# vi Dockerfile
FROM python:3.5
#MySQL-Python         
RUN mkdir /User
#      
WORKDIR /User
#             
ADD . /User
#install any needed pacakges in requirements.txt,          Python      
  。
RUN pip install -r requirements.txt
#      
EXPOSE 80 8000
#      
ENV SPIDER=/User

2, requirements. txt 파일 추가
Django==1.18
Pillow
PyMySQL

3. 프로젝트 settings. py 파일 설정 수정 부분 은 두 가지 가 있 습 니 다.
ALLOWED_HOSTS = ['*', ]
。。。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'dataname',
        'USER': 'root',
        'PASSWORD': '123456',
  'HOST': 'db',
    }
}

여기 NAME 가 docker - compose. yml 파일 에 있 는 MYSQL 입 니 다.DATABASE, PASSWORD 는 docker - compose. yml 파일 의 MYSQL 입 니 다.ROOT_PASSWORD, HOST 는 docker - compose. yml 의 db 4 입 니 다. 스 크 립 트 start. py 시작
#!/bin/bash
python manage.py collectstatic --noinput &&
python manage.py migrate &&
gunicorn User.wsgi:application -c gunicorn.conf

5. 이 밖 에 django 응용 프로그램 은 gunicorn 을 웹 서버 로 선택 하고 gunicorn 의 설정 파일 은 다음 과 같 습 니 다.
workers=4
bind=['0.0.0.0:8000']
proc_name='blog'
pidfile='/tmp/blog.pid'
worker_class='gevent'
max_requests=6000

 4. docker - compose 파일 vi Docker - compose. yml 작성 
version: "3"
services:
    db:
       image: mysql
       environment:
          MYSQL_DATABASE: dataname
          MYSQL_ROOT_PASSWORD: 123456
       volumes:
         - /srv/db:/var/lib/mysql
       restart: always
    web:
       build: ./User
       ports:
       - "8001:8001"
       volumes:
       - ./User:/User
       - /tmp/logs:/tmp
       command: python3 manage.py runserver 0.0.0.0:8001
   nginx:
     build: ./nginx
     ports:
     - "81:80"
     volumes:
     - ./User/static:/usr/share/nginx/html/static
     - ./User/media:/usr/share/nginx/html/media
     links:
     - web
     depends_on:
     - web
     restart: always

5. a 컴 파일 및 시작, docker - compose build b 컴 파일, docker - compose up 또는 docker - compose up - d (배경 실행) 를 시작 하여 브 라 우 저 에 localhost 를 입력 하면 프로젝트 에 성공 적 으로 접근 할 수 있 습 니 다. 참고 글https://blog.csdn.net/hbnn111/article/details/77176629

좋은 웹페이지 즐겨찾기