https://hub.docker.com/_/django/
(一)dockerfile方法
FROM python:3.4
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
postgresql-client \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
(二)不用dockerfile方法:
$ docker run --name some-django-app -v "$PWD":/usr/src/app -w /usr/src/app -p 8000:8000 \
-d django bash -c "pip install -r requirements.txt && python manage.py runserver 0.0.0.0:8000"
在项目的根目录下执行以上命令即可
[root@centos4 mysite]# ls
blog db.sqlite3 manage.py mysite requirements.txt sftp-config.json static uwsgibk uwsgi.ini
[root@centos4 mysite]#
[root@centos4 mysite]# docker exec -it 236 /bin/bash
root@2361f1355d70:/usr/src/app# ls
blog db.sqlite3 manage.py mysite requirements.txt sftp-config.json static uwsgi.ini uwsgibk
root@2361f1355d70:/usr/src/app#
-v "$PWD":/usr/src/app
可以看到宿主机中项目上下能内容已经挂载到容器内的/usr/src/app中了
pip install -r requirements.txt
root@2361f1355d70:/usr/src/app# pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Django (1.8.6)
django-bootstrap3 (9.1.0)
django-ckeditor (5.4.0)
django-js-asset (0.1.1)
mysqlclient (1.3.9)
olefile (0.44)
Pillow (4.3.0)
pip (9.0.1)
psutil (5.4.2)
psycopg2 (2.6.2)
setuptools (20.10.1)
root@2361f1355d70:/usr/src/app#
[root@centos4 mysite]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2361f1355d70 django "bash -c 'pip install" 40 minutes ago Up 26 seconds 0.0.0.0:8000->8000/tcp some-django-app
d6bb2b0cf809 registry "/entrypoint.sh /etc/" 9 days ago Up About an hour 0.0.0.0:5000->5000/tcp registry
[root@centos4 ~]# docker history eb40dcf64078
IMAGE CREATED CREATED BY SIZE COMMENT
eb40dcf64078 14 months ago /bin/sh -c pip install mysqlclient psycopg2 d 37.01 MB
[root@centos4 ~]# docker logs 2361f1355d70 --tail 10
Running setup.py install for psutil: started
Running setup.py install for psutil: finished with status 'done'
Successfully installed Django-1.8.6 Pillow-4.3.0 django-bootstrap3-9.1.0 django-ckeditor-5.4.0 django-js-asset-0.1.1 olefile-0.44 psutil-5.4.2
Requirement already satisfied: Django==1.8.6 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 1))
Requirement already satisfied: django-bootstrap3==9.1.0 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 2))
Requirement already satisfied: django-ckeditor==5.4.0 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 3))
Requirement already satisfied: django-js-asset==0.1.1 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 4))
Requirement already satisfied: olefile==0.44 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 5))
Requirement already satisfied: Pillow==4.3.0 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 6))
Requirement already satisfied: psutil==5.4.2 in /usr/local/lib/python3.4/site-packages (from -r requirements.txt (line 7))
[root@centos4 ~]#
[root@centos4 mysite]# netstat -anp | grep 8000
tcp6 0 0 :::8000 :::* LISTEN 17211/docker-proxy-
[root@centos4 mysite]#
docker stop 2361f1355d70后无法访问