Erstellen Sie Dockerfile, docker-compose.yaml, require.txt unter Schnellstart: Compose and Django.
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
Ich möchte mit einem Tool auf Postgres zugreifen, daher veröffentliche ich den Beitrag. Dann war postgres wütend, dass er das Superuser-Passwort nicht hatte, und antwortete mit der Umgebungsvariablen in der Fehlermeldung. Natürlich ist es besser, das Passwort des Superusers festzulegen, aber diesmal ist es eine gute Umgebung, um sich zu bewegen, also ist es einfach.
docker-compose.yaml
services:
db:
image: postgres
environment:
POSTGRES_HOST_AUTH_METHOD: "trust"
ports:
- "5432:5432"
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
require.txt hat versucht, die Versionsspezifikation von Django zu entfernen.
requirements.txt
Django
psycopg2
Erstellen Sie ein Projekt.
docker-compose run web django-admin.py startproject composeexample .
Stellen Sie die Datenbank ein. Versuchen Sie, eine Verbindung zu Postgres herzustellen.
composeexample/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
Starten Sie den Server!
docker-compose up
Führen Sie localhost: 8000
im Browser aus, und wenn die Django-Seite angezeigt wird, ist sie erfolgreich.
Ich weiß nicht, ob ich wirklich mit Postgres verbunden bin. Lassen Sie uns also die Verwaltungsseite anzeigen.
Erstellen Sie die Systemtabellen, die Django benötigt.
docker-compose run web python3 manage.py makemigrations
docker-compose run web python3 manage.py migrate
Erstellen Sie einen Benutzer, der sich auf der Administrationsseite anmeldet.
docker-compose run web python3 manage.py createsuperuser
Username (leave blank to use 'root'):
Email address: [email protected]
Password:
Password (again):
Wenn Sie "localhost: 8000 / admin" in Ihrem Browser ausführen, wird die Anmeldeseite aufgerufen. Versuchen Sie, sich mit dem gerade erstellten Superuser anzumelden. OK, wenn Sie sich anmelden können.
Voraussetzung ist, dass Remote Development in VS Code installiert ist.
Ändern Sie die resultierende Datei "devcontainer.json", um sie für das Remote-Debugging an den Container anzuhängen.
Die zusammen erstellte docker-compose.yml
muss nicht geändert werden.
json:.devcontainer/devcontainer.json
{
"name": "Existing Docker Compose (Extend)",
"dockerComposeFile": [
"../docker-compose.yaml",
"docker-compose.yml"
],
"service": "web",
"workspaceFolder": "/workspace",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
//Docker- und Python-Erweiterungen hinzugefügt
"extensions": [
"ms-azuretools.vscode-docker",
"ms-python.python"
],
//Stoppen Sie den Container am Ende von VS Code
"shutdownAction": "stopCompose",
}
Speichern Sie den Arbeitsbereich hier. Wenn es sich nicht um einen Arbeitsbereich handelt, tritt im nächsten Schritt ein Fehler auf.
Bearbeiten Sie die erstellte launch.json
.
json:.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "django container",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/manage.py",
"console": "integratedTerminal",
"args": [
"runserver",
"--noreload",
"0.0.0.0:8888"
],
"django": true
}
]
}
Da der Interpreter festgelegt ist, erstellen Sie ".vscode / settings.json" und nehmen Sie die folgenden Einstellungen vor.
{
"python.pythonPath": "/usr/local/bin/python"
}