【容器】Docker之django+mysql简单部署示例

拓扑:

1. 在CentOS7上,django项目目录为/smb/public/eclipse-workspace/DjangoProj/djcode/mysite, 映射到容器django中的目录为/tmp

2. 在CentOS7上,mysql数据库对应的目录为/var/lib/docker/volumes/mysql,映射到容器mysql中的目录为/var/lib/mysql

步骤:

1. 获取django镜像(如果是用python2.7开发的就获取django 2.7版本的镜像):

 

[root@localhost ~]# docker pull django:python2-onbuild

 

2. 获取mysql镜像

 

[root@localhost ~]# docker pull mysql

 

 

3. 进入获取的django镜像,进行测试,发现缺少django库和MySQL-python库,于是使用pip安装这两个库:

 

[root@localhost ~]# docker run -it --name=django_test -v /smb/public/eclipse-workspace/DjangoProj/djcode/mysite/:/tmp:rw -p 8001:8001 django:python2-onbuild /bin/bash
root@cf574e2deca4:/usr/src/app# cd /tmp/
root@cf574e2deca4:/tmp# python manage.py check
Traceback (most recent call last):
  File "manage.py", line 17, in <module>
    "Couldn't import Django. Are you sure it's installed and "
ImportError: Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?

root@cf574e2deca4:/tmp# pip install django
...
...
Successfully installed django-1.11.7 pytz-2017.3

root@cf574e2deca4:/tmp# python manage.py check
Traceback (most recent call last):
...
  ...Error loading MySQLdb module: No module named MySQLdb.
Did you install mysqlclient or MySQL-python?
root@cf574e2deca4:/tmp# pip install MySQL-python
...
Successfully built MySQL-python
Installing collected packages: MySQL-python
Successfully installed MySQL-python-1.2.5

 

4. 提交对django:python2-onbuild镜像的更改到自己的仓库(owenchen1992/mydjango:python2.7)

 

[root@localhost ~]# docker commit django_test owenchen/django_test
sha256:55376230bf7539f0ac7a3e083270f48f8ee8c2bfec247c2e39b4616e2cf688de


5. 参考http://blog.csdn.net/m0_37904728/article/details/78621191进入mysql容器,创建所需的数据库,同时参考http://blog.csdn.net/m0_37904728/article/details/78622843确保host上存放数据的卷正确对应到mysql容器。(commit后的两个镜像名称为owenchen1992/mydjango:python2.7和owenchen1992/mysql)

 

6. 查看两个容器的ip,确保他们网络可以互通:

[root@localhost ~]# docker network inspect bridge 
[
   ...
        "Containers": {
            "09faeb3f1de3c6b8e6970fed796104c89023f04a37d050f837d6bf2b9755fcf8": {
                "Name": "mysql",
                "EndpointID": "12fe6290993fc3d7e156c279e9bd7904beb8cc9e5e7d99722063003bf2981f2e",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "b4236ebf6c826e92e084f2f804a308111c3cf481eb06a0d0de9f81cb5f38c887": {
                "Name": "django",
                "EndpointID": "192b0e08792231b880f2a3843c9ba996beb73ffb50316dd83b1ca935f7986c6c",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },
  ...
]

 

 

 

7. 这时启动两个容器,名称为django和mysql:

 

[root@localhost ~]# docker run -it --name=django -v /smb/public/eclipse-workspace/DjangoProj/djcode/mysite/:/tmp:rw -p 8000:8000 owenchen1992/mydjango:python2.7 /bin/bash
[root@localhost ~]# docker run --name=mysql -p 3306:3306 -v /var/lib/docker/volumes/mysql:/var/lib/mysql:rw -d owenchen1992/mysql


8.进入容器django,进行系统检查,检查通过:

[root@localhost ~]# docker exec -it django bash
root@cf574e2deca4:/usr/src/app# cd /tmp
root@cf574e2deca4:/tmp# python manage.py check
System check identified no issues (0 silenced).

 

 

 

9.运行django服务器:

root@b4236ebf6c82:/tmp# python manage.py runserver 0.0.0.0:8000
Performing system checks...

System check identified no issues (0 silenced).
November 24, 2017 - 07:40:12
Django version 1.11.7, using settings 'mysite.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.

 

10.运行成功,在host上浏览器访问django容器的ip地址和8000端口即可看到页面

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章