Erstellen Sie einen Docker-Ordner direkt unter dem Projekt und erstellen Sie einen Ordner db_data (möglicherweise mit einem anderen Namen) und eine Docker-compose.yml direkt darunter.
concentratio #Projektstammverzeichnis
├── config
│ └── ...
│
├── docker
│ ├── db_data #Für die Datenpersistenz
│ └── docker-compose.yml
└── ...
docker/docker-compose.yml
version: '2'
services:
db:
image: mariadb:latest
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
environment:
- MYSQL_ROOT_USER=root
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=concentratio
- MYSQL_USER=user
- MYSQL_PASSWORD=user
volumes:
- db_data:/var/lib/mysql # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
- ./db_data:/docker-entrypoint-initdb.d # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
- ./db_data:/etc/mysql/conf.d # db_Wenn Sie den Namen des Datenordners geändert haben, schreiben Sie ihn mit dem geänderten Ordnernamen neu.
ports:
- '3333:3306'
volumes:
db_data:
driver: local
Da der Ordner db_data in /docker-entrypoint-initdb.d gemountet ist, wird der Container beim ersten Start in den Ordner db_data eingefügt (beim ersten Mal?). Die SQL-Datei wird ausgeführt. </ font>
Verwenden Sie den Befehl cd, um in das Verzeichnis "docker" zu wechseln, und verwenden Sie dann "docker-compose up -d", um den MySQL-Container zu starten.
docker$ docker-compose up -d
Creating docker_db_1 ... done
Apropos
Stop ist "Docker-Compose Stop" (oder "Docker Stop Container ID oder Containername")
Löschen ist docker-copose down -v
(oder docker rm container ID oder container name
)
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03dd318a2ad7 mariadb:latest "docker-entrypoint.s…" 29 seconds ago Up 29 seconds 0.0.0.0:3333->3306/tcp docker_db_1
Es sieht so aus, als könnte ich mich verbinden
pip3 install django-environ mysqlclient
concentratio #Projektstammverzeichnis
├── config
│ └── ...
│
├── docker
│ └── ...
│
├──.env
│
└── ...
.env.default
DEBUG=True
DATABASE_URL=mysql://user:[email protected]:3333/concentratio
config/settings.py
.
..
...
import environ #hinzufügen(django-Umgebung importieren)
.
..
...
#hinzufügen
ENV_FILE = os.path.join(BASE_DIR, '.env') # .env Dateipfad
ENV = environ.Env()
ENV.read_env(ENV_FILE) # django-in der Umwelt.Lesen Sie die env-Datei
...
..
.
#hinzufügen
DATABASES = {
'default': ENV.db()
}
DATABASES['default']['ATOMIC_REQUESTS'] = True # ATOMIC_Wenn REQUESTS auf True gesetzt ist, wird die gesamte Ansicht zu einer Transaktion (wenn während der Ansichtsverarbeitung eine Ausnahme auftritt, wird die vorherige DB-Operation zurückgesetzt).
...
..
.
python3 manage.py makemigrations
python3 manage.py migrate
Der Migrationsbefehl ist in Ordnung, solange verschiedene OKs angegeben werden.
$ python3 manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
Die Management-Tabelle von Django wurde erstellt. Die DB-Migration ist abgeschlossen.
Sie können einen Superuser mit "python3 manage.py createduperuser" erstellen.
$ python3 manage.py createsuperuser
Username : admin #Richtig einstellen (diesmal Admin)
Email address: [email protected] #Stellen Sie dies entsprechend ein (diesmal admin)@admin.co.jp)
Password: #Richtig einstellen (diesmal Admin)
Password (again): #Richtig einstellen (diesmal Admin)
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y #Ich erhalte eine Warnung, dass das Passwort einfach ist, aber es spielt keine Rolle, ob es "y" ist.
Superuser created successfully.
Der Benutzer wurde erstellt. das ist alles.
Recommended Posts