docker & docker compose - django + mysql

some steps:

------> (1)


write django Dockerfile under your project root dir such as:

FROM ubuntu:latest

RUN apt-get -y update
RUN apt-get install -y python3
RUN apt-get install -y python3-dev
RUN apt-get install -y python3-pip
RUN apt-get install -y python3-setuptools

RUN apt-get install -y libmysqlclient-dev

RUN mkdir /kyzs
WORKDIR /kyzs

ADD . /kyzs

RUN pip3 install -r requirements.txt

EXPOSE 80 8080 8000 9000

ENV SPIDER=/kyzs


write  requirement.txt which is refer to your project such as (same dir as Dockerfile):

django
pymysql
numpy
nltk
pillow


write start.sh which is the door of your project such as (same dir as Dockerfile):

python3 manage.py makemigrations &&
python3 manage.py migrate &&
python3 manage.py runserver 0.0.0.0:8000

----> (2)

write docker-compose.yml which located at the same dir with your project root dir: the content is below


version: '3'
services:
    db:
        image: mysql:5.6
        restart: always
        command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --init-connect='SET NAMES utf8mb4;' --innodb-flush-log-at-trx-commit=0
        expose:
            - "3306"
        volumes:
            - ./db:/var/lib/mysql:rw
        environment:
            - MYSQL_DATABASE=kyzs
            - MYSQL_ROOT_PASSWORD=123
    web:
        build: ./kyzs
        command: bash start.sh
        volumes:
            - ./kyzs:/kyzs
        ports:
            - "8000:8000"
        links:
            - db          
        depends_on:
            - db
        restart: always

------> (3) some tips

dir  as below

kyzs ---

           docker-compose.yml

           db (exist at the content of "docker-compose")

           kyzs------

                      Dockerfile

                      start.sh

                     requirements.txt

you should modify the django settings about the db module  example as below:

ALLOWED_HOSTS = ["*",]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'kyzs',
        'USER':'root',
        'PASSWORD':'123',
        'HOST':'db',
        'PORT':'3306',
         #os.path.join(BASE_DIR, 'db.sqlite3')
    }
}

I should remind you that mysql:latest or mysql 8.0 maybe have some bug and I not recommand to you

my ubuntu has no chinese-pin so I just record in eng , just for record and just for me......

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值