天天看點

django項目+MySQL+phpmyadmin 全部使用docker容器運作

三個容器需要确定先後順序 ,後期會使用docker-compose在制作一份,此處就是直接指令行展示。

第一步:資料庫容器

sudo  docker run --name mysql-dragonstack -p 3386:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7
           

直接運作即可 本地沒有mysql:5.7的鏡像會自動去網上拉取

建立資料庫newcloud:

進入容器建立:

sudo docker exec -it mysql-dragonstack /bin/bash
#進入後鍵入下面指令
mysql -u root -p
create database newcloud default character set utf8;
grant all on *.* to [email protected]'%' identified by 'xidian320' with grant option;
flush privileges;
           

第二步:安裝phpmyadmin容器,用于可視乎資料庫操作

sudo docker run --name phpmyadmin-test -p 8080:80 --link mysql-dragonstack:db -d phpmyadmin/phpmyadmin:latest
           

此時,就可以直接通過主控端ip加8080端口 來可視化通路資料庫

第三步:配置django項目服務容器

将自己的項目制作成容器鏡像,然後運作

附上dockerfile

FROM ubuntu:16.04
MAINTAINER NSS/JJL

COPY	./sources.list /etc/apt/sources.list

RUN     apt-get update \
        && apt-get install python-software-properties -y\
        && apt-get install software-properties-common apt-utils -y\
        && add-apt-repository ppa:deadsnakes/ppa -y\
        && apt-get update

RUN	apt-get install python3.6 -y\
        && rm /usr/bin/python\
        && ln -s /usr/bin/python3.6 /usr/bin/python\
        && rm /usr/bin/python3\
        && ln -s /usr/bin/python3.6 /usr/bin/python3\
        && apt-get install python3-pip -y\
        && pip3 install pip -U\
        && rm /usr/bin/pip3 \
        && ln -s -f /usr/local/bin/pip3 /usr/bin/pip3\
        && ln -s -f /usr/local/bin/pip3 /usr/bin/pip\
        && pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

RUN 	apt-get install libvirt-dev -y\
	&& apt-get install python3.6-dev -y\
	&& apt-get install openssh-client openssh-server vim -y\
	&& rm -rf /var/lib/apt/lists/*

COPY    ./DockerCloud /DockerCloud/
RUN	pip install -r /DockerCloud/requirements.txt
COPY    ./base.py /usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/base.py

WORKDIR	/DockerCloud

ENV LANG C.UTF-8

EXPOSE	80

CMD	["python", "manage.py", "runserver", "0:80"]
           

建立django項目的挂載檔案 或者在項目的settings下修改,目的是保證項目能找到所運作的資料庫的位置

sudo docker run --name dragonstack -d -p 32769:80 --restart=always --link mysql-dragonstack:db -v /home/slave9/config.ini:/DockerCloud/config.ini -v /home/slave9/TOKE:/DockerCloud/TOKEN nssjjl/dockercloud:v2.2
           

config.ini檔案中記錄資料庫的資訊:

[mysql]

#use in settings.py

host=mysql-dragonstack

port=3306

database=newcloud

user=root

password=password

或者在項目中的settings修改 主要就是host修改為資料庫容器名

DATABASES = {

‘default’: {

‘ENGINE’: ‘django.db.backends.mysql’,

‘NAME’: ‘newcloud’,

‘USER’: ‘root’,

‘PASSWORD’: ‘password’,  

‘HOST’: ‘mysql-dragonstack’,

}

}

以上的操作 ,是通過link的方式實作的docker容器通信,如果是跨主控端上面的操作将失敗 ,需使用其他的方式