Docker Compose 建立Django環境

LSZ
4 min readSep 24, 2019

--

環境: centos 7

紀錄docker建立django環境過程

dockerfile :

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

docker-compose.yml :

version: '3'services:
db:
image: postgres
environment:
POSTGRES_PASSWORD: test
ports:
- 5432:5432
volumes:
- ./pgdata:/var/lib/postgresql/data
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db

requirements.txt :

Django>=2.0,<3.0
psycopg2>=2.7,<3.0

建立Project指令

sudo docker-compose run web django-admin startproject composeexample .

連接資料庫

資料夾裡會多出composeexample資料夾跟manage.py檔案

打開composeexample裡的settings.py, 修改database的部份

# Database# https://docs.djangoproject.com/en/2.2/ref/settings/#databasesDATABASES = {    'default': {        'ENGINE': 'django.db.backends.postgresql',        'NAME': 'postgres',        'USER': 'postgres',        'PASSWORD': 'test',        'HOST': 'db',           'PORT': 5432,    }}

在settings.py設定ALLOWED_HOSTS

ALLOWED_HOSTS = ['0.0.0.0']

運行docker-compose up -d

確認容器: docker ps

查看錯誤: docker-compose logs (需在目錄底下)

關閉服務: docker-compse down

進入容器bash: docker exec -it <Container ID> bash

Contain ID可由docker ps取得

訪問0.0.0.0:8080

可以看到畫面代表成功

安裝pgadmin

# yum -y install https://download.postgresql.org/pub/repos/yum/11/redhat/rhel-7-x86_64/pgdg-centos11-11-2.noarch.rpm#yum -y install pgadmin4

設定pgadmin

./usr/pgadmin4/bin/pgadmin4-web-setup.sh

進入pgadmin資料夾

cd /usr/lib/python2.7/site-packages/pgadmin4-web/#會是空白的檔案
vim config_local.py

加入2行

DEFAULT_SERVER = '0.0.0.0'
DEFAULT_SERVER_PORT = 8080

運行pgadmin

python /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py

連線時使用localhost即可

--

--