Ich bin Neuling in Docker-Compose und ich habe ein Docker mit meiner Django-Instanz und einer MySQL-Datenbank. Ich möchte einen selbstautokonfigurierten Container erstellen, der nur beim ersten Docker-Lauf einen Befehl ausführt. In diesem Befehl würde Ich mag die folgenden Aufgaben:Init Django App mit Docker-komponieren
- anfängliche Datenbankmigrationen
- macht die Admin Super-User erstellen
- Import einen MySQL-Backup in die Datenbank
Danach sollte das System Lanciere weiterhin den django test Webserver.
Gibt es eine Möglichkeit, docker-compose anzuweisen, einen Befehl nur bei der ersten Ausführung auszuführen, oder gibt es eine Alternative in django, um zu steuern, ob das System bereits konfiguriert und aktualisiert wurde?
Um hier sind meine dockfile und Docker-compose.yml zu klären:
FROM python:3.4
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
####################
version: '2'
services:
db:
image: "mysql:5.6"
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: xxxxxx
MYSQL_DATABASE: xxxxxx
MYSQL_USER: xxxxx
MYSQL_PASSWORD: xxxxxxx
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
Dank.
Sie könnten Ihre eigene Dockerfile rollen, um diese Befehle auszuführen –
@ cricket_007 Ich weiß nicht wirklich, ob eine einfache Änderung der Dockerdatei funktioniert, weil ich die Datenbank als unabhängiges Bild von meinem Django benutze. – rdiaz82
Ich verstehe das. Ich habe gesagt, dass Sie einen Datenbankcontainer (getrennt von Django) mit einer Ebene erstellen, auf der Ihre Skripts und Importe laufen. Nachdem Sie ein Bild haben, ist Docker nicht wirklich entworfen, um "etwas nur einmal auszuführen" (d. H. Stateful). Das ist zumindest meine Erfahrung –