環境: 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即可