docker运行django+uwsgi+nginx+mysql

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jb19900111/article/details/86506081

宿主机 运行docker、docker-compose
两个容器 一个运行mysql 一个运行django+uwsgi+nginx

[root@dockerhost blog]# docker-compose ps
   Name                Command             State          Ports       
----------------------------------------------------------------------
blog_db_1    docker-entrypoint.sh mysqld   Up      3306/tcp, 33060/tcp
blog_web_1   supervisord -n                Up      0.0.0.0:80->80/tcp 

代码目录情况

[root@dockerhost /]# tree  -L 2 /blog
/blog
├── conf.d
│   └── my.cnf
├── db_data
│   ├── auto.cnf
│   ├── binlog.000001
│   ├── binlog.000002
│   ├── binlog.000003
│   ├── binlog.000004
│   ├── binlog.000005
│   ├── binlog.000006
│   ├── binlog.000007
│   ├── binlog.000008
│   ├── binlog.000009
│   ├── binlog.000010
│   ├── binlog.000011
│   ├── binlog.000012
│   ├── binlog.000013
│   ├── binlog.000014
│   ├── binlog.000015
│   ├── binlog.000016
│   ├── binlog.000017
│   ├── binlog.000018
│   ├── binlog.000019
│   ├── binlog.000020
│   ├── binlog.000021
│   ├── binlog.000022
│   ├── binlog.000023
│   ├── binlog.000024
│   ├── binlog.000025
│   ├── binlog.index
│   ├── ca-key.pem
│   ├── ca.pem
│   ├── client-cert.pem
│   ├── client-key.pem
│   ├── ib_buffer_pool
│   ├── ibdata1
│   ├── ib_logfile0
│   ├── ib_logfile1
│   ├── ibtmp1
│   ├── #innodb_temp
│   ├── mysql
│   ├── mysql.ibd
│   ├── performance_schema
│   ├── private_key.pem
│   ├── public_key.pem
│   ├── religionblog
│   ├── server-cert.pem
│   ├── server-key.pem
│   ├── sys
│   ├── undo_001
│   └── undo_002
├── docker-compose.yml
├── Dockerfile
├── religionblog
│   ├── manage.py
│   ├── religionblog
│   ├── religionblog.sock
│   ├── static
│   ├── templates
│   ├── theology
│   └── uwsgi.ini
└── uwsgi_params

12 directories, 51 files

supervisord配置文件目录情况

[root@dockerhost religionblog]# tree /supervisor.conf.d/
/supervisor.conf.d/
└── supervisor-blog.conf

0 directories, 1 file

nginx配置文件目录情况

[root@dockerhost religionblog]# tree /nginx.conf.d/
/nginx.conf.d/
└── default

0 directories, 1 file

Dockerfile文件内容

[root@dockerhost blog]# cat Dockerfile 
FROM python:2.7-slim
ENV DJANGO_VERSION 1.10.4
RUN apt-get update && apt-get install -y \
		gcc \
		gettext \
		mysql-client default-libmysqlclient-dev \
		 libpq-dev \
		sqlite3 \
        supervisor\
		nginx\
        procps\
        net-tools\
	--no-install-recommends && rm -rf /var/lib/apt/lists/*  && \
    pip install mysqlclient uwsgi  psycopg2 pillow django=="$DJANGO_VERSION" \
    && mkdir /code \
    && echo "daemon off;" >> /etc/nginx/nginx.conf
WORKDIR /code

compose配置文件内容

[root@dockerhost blog]# cat docker-compose.yml 
version: "3"
services:

  db:
    image: mysql
    environment:
        MYSQL_DATABASE: "religionblog"
        MYSQL_USER: "root"
        MYSQL_PASSWORD: "111111"
        MYSQL_ROOT_PASSWORD: "111111"
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
    volumes:
        - /blog/db_data:/var/lib/mysql
        - /blog/conf.d:/etc/mysql/conf.d
    restart: always
 
  web:
    build: .
    command: supervisord -n
    ports:
      - "80:80"
    links:
      - db
    volumes:
      - .:/code
      - /nginx.conf.d/:/etc/nginx/sites-available
      - /supervisor.conf.d/:/etc/supervisor/conf.d/

my.cnf配置文件内容

[root@dockerhost ~]# cat /blog/conf.d/my.cnf 
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
performance_schema = OFF
[mysql]
no-auto-rehash
default-character-set=utf8

uwsgi配置文件内容

[root@dockerhost blog]# cat religionblog/uwsgi.ini 
[uwsgi]
# Django-related settings
socket = %dreligionblog.sock
http = :8081
# the base directory (project full path)
chdir           = /code/religionblog



# process-related settings
# master
master          = true

# maximum number of worker processes
processes       = 4
threads = 2

chmod-socket=666
wsgi-file=./religionblog/wsgi.py

[root@dockerhost blog]# cat uwsgi_params 
uwsgi_param  QUERY_STRING       $query_string;
uwsgi_param  REQUEST_METHOD     $request_method;
uwsgi_param  CONTENT_TYPE       $content_type;
uwsgi_param  CONTENT_LENGTH     $content_length;

uwsgi_param  REQUEST_URI        $request_uri;
uwsgi_param  PATH_INFO          $document_uri;
uwsgi_param  DOCUMENT_ROOT      $document_root;
uwsgi_param  SERVER_PROTOCOL    $server_protocol;
uwsgi_param  REQUEST_SCHEME     $scheme;
uwsgi_param  HTTPS              $https if_not_empty;

uwsgi_param  REMOTE_ADDR        $remote_addr;
uwsgi_param  REMOTE_PORT        $remote_port;
uwsgi_param  SERVER_PORT        $server_port;
uwsgi_param  SERVER_NAME        $server_name;

nginx配置文件内容

[root@dockerhost blog]# cat /nginx.conf.d/default 
upstream django {
    server unix:/code/religionblog/religionblog.sock;
}

server {
    listen      80 default_server;

    server_name www;
    charset     utf-8;

    client_max_body_size 75M;


    location /static {
        alias /code/religionblog/static/;
    }

    location / {
        uwsgi_pass  django;
        include     /code/uwsgi_params;
    }
}

supervisord配置文件内容

[root@dockerhost blog]# cat /supervisor.conf.d/supervisor-blog.conf
[program:uwsgi]
command = /usr/local/bin/uwsgi --ini /code/religionblog/uwsgi.ini

[program:nginx]
command = /usr/sbin/nginx

docker-compose build后运行docker-compose run web python /code/religionblog/manage.py migrate同步数据库,之后启动容器:docker-compose up -d。访问http://宿主机ip:80/。

猜你喜欢

转载自blog.csdn.net/jb19900111/article/details/86506081