【容器】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端口即可看到頁面

 

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