Докеризация приложения Django и MySQL с помощью docker-compose с использованием .env
Я хочу запустить свой проект Django в контейнере Docker с базой данных в другом контейнере Docker внутри Bebian
Когда я запускаю свой контейнер docker, у меня возникают некоторые ошибки. Например Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)
.
Эта команда mysql > SET GLOBAL log_bin_trust_function_creators = 1
очень важна, потому что триггер создания пользователя базы данных Django.
Более того, я использую .env файл, используемый также для создания образа DB для хранения пользователя и пароля DB. Этот путь settings/.env
.
Мой код: docker-compose.yml:
version: '3.3'
services:
db:
image: mysql:8.0.29
container_name: db_mysql_container
environment:
MYSQL_DATABASE: $DB_NAME
MYSQL_USER: $DB_USER
MYSQL_PASSWORD: $DB_PASSWORD
MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD
command: ["--log_bin_trust_function_creators=1"]
ports:
- '3306:3306'
expose:
- '3306'
api:
build: .
container_name: django_container
command: bash -c "pip install -q -r requirements.txt &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
volumes:
- .:/app
ports:
- '8000:8000'
depends_on:
- db
Dockerfile :
# syntax=docker/dockerfile:1
FROM python:3.9.14-buster
ENV PYTHONUNBUFFERED=1
RUN mkdir /app
WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/
Как запустить мой проект Django? Можно ли запустить только контейнер DB ?
Какую команду мне нужно выполнить и какие изменения мне нужно сделать, я новичок в Docker! Так что если вы поможете мне, пожалуйста, объясните ваши команды и действия!
Вы можете найти этот проект на моем GitHub
Спасибо!
Запустить докеризованный проект django.
Просто выполните следующую команду:
docker-compose run projectname bash -c "python manage.py createsuperuser"
Вышеприведенная команда используется для создания суперпользователя