【发布时间】:2021-06-10 16:19:24
【问题描述】:
这里有2个案例:
案例 1: 我创建了一个名为 Counterproj 的 Django 项目,它使用名为 Sqlite3 的默认数据库。我已经使用 Dockerfile 对这个项目进行 docker 化并推送到 Azure ACI,它在 local 和 cloud 两种情况下都运行良好。
案例 2: 当我从 Sqlite3 迁移到 PostgreSQL 时,问题就从这里开始了@ 这些在我的本地运行良好,但是当我推送到 Azure ACI 时,容器 Counterproj_web:test 和 postgres:test 无法相互通信并且实例正在终止。
我的查询是,我们能否在不使用任何 docker-compose.yml 的情况下创建单个 Dockerfile,以使用 PostgreSQL 作为数据库进行 Django 项目容器化。如果我们可以创建单个 dockerfile,请建议我应该在本地和云中运行的最佳方式。
下面是我的Dockerfile、docker-compose.yml和database settings供大家参考。
Dockerfile:
#syntax=docker/dockerfile:experimental
# Python Version(Base Image)
FROM python:3
# Set Envirment variable
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set Working directory
WORKDIR /app
# Add all the things into app
ADD . /app
# Instruct docker to install all the requirements to run the project
# Copy current requirements to your docker image
COPY ./requirments.txt /app/requirments.txt
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirments.txt
COPY . /app
# install dependencies
RUN pip install --upgrade pip
docker-compose.yml:
version: '3.3'
services:
db:
image: postgres:test
volumes:
- ./db/:/var/lib/posgresql/data
environment:
- POSTGRES_DB=Counterproj
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=12345
web:
image: Counterproj_web:test
build: .
command: python manage.py runserver 0.0.0.0:80
ports:
- "80:80"
volumes:
- .:/app
depends_on:
- db
settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'Counterproj',
'USER': 'postgres',
'PASSWORD': '12345',
'HOST': 'db',
'PORT': 5432,
}
}
【问题讨论】:
标签: django docker docker-compose dockerfile azure-acr