Postgresql
Docker-compose 數據庫的 IP 地址
我找到了一個 Django 項目,但未能通過以下方式在 Docker 容器中執行:
git clone https://github.com/hotdogee/django-blast.git
$ cat requirements.txt
在此文件中,必須更新以下依賴項:
- 海帶 == 3.0.30
- psycopg2==2.8.6
我有以下 Dockerfile:
FROM python:2 ENV PYTHONUNBUFFERED=1 WORKDIR /code COPY requirements.txt /code/ RUN pip install -r requirements.txt COPY . /code/
因為
docker-compose.yml
我使用:version: "3" services: db: image: postgres volumes: - ./data/db:/var/lib/postgresql/data environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db
docker-compose 使用哪個 IP 地址,因為我必須更改以下硬編碼地址:
$ grep -ir "127.0.0.1" i5k/settings_prod.py: 'HOST': '127.0.0.1', i5k/settings.py: 'HOST': '127.0.0.1', i5k/settings.py: 'LOCATION': '127.0.0.1:11211', Binary file i5k/settings.pyc matches example/blastdb/AGLA_new_ids.faa.phd:13312790801051 grep: data/db: Permission denied blast/static/blast/components/code-mirror/codemirror-4.0/mode/nginx/index.html: fastcgi_pass 127.0.0.1:9000; blast/static/blast/components/code-mirror/codemirror-4.0/mode/nginx/index.html: fastcgi_pass 127.0.0.1:9000; axes/tests.py: reset(ip='127.0.0.1') axes/decorators.py: ip_address = '127.0.0.1'
先感謝您
不要使用容器內的 IP 地址。而是使用連結標誌將多個容器連接在一起,然後使用連結容器的名稱。
version: "3" services: db: image: postgres volumes: - ./data/db:/var/lib/postgresql/data environment: - POSTGRES_DB=postgres - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres web: build: . command: python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" depends_on: - db links: - db
該連結允許 Web 容器使用主機名 db 訪問 db 容器。