JEETパテル:
私は、ドッカーコンテナとジャンゴとMySQLアプリケーションを設定しようとしています。
3.7-スリムな画像とMySQL MySQL用:5.6ジャンゴのために私は、Pythonを使用しています。
私が実行した場合docker-compose up
には、下記のエラーを返します-
ERROR: for app_mysql_db_1 Cannot start service mysql_db: driver failed programming external connectivity on endpoint app_mysql_db_1 (c647d4793a198af2c09cc52d08191fb2cd984025ad0a61434ad1577d9dcccebe): Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
私は、コマンドを実行するdocker ps -a
ドッキングウィンドウの状態を確認すると、mysqlのコンテナが作成されたことがわかったが、Pythonのコンテナのステータスが終了しました。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d91795e0bae mysql:5.6 "docker-entrypoint.s…" 15 seconds ago Created app_mysql_db_1
fa0419ad0f21 e0bf94710555 "/bin/sh -c 'adduser…" 2 minutes ago Exited (1) 2 minutes ago pedantic_faraday
缶誰か書き換えまたは構成の変更を示唆しています。
Dockerfile
FROM python:3.7-slim
ENV PYTHONUNBUFFERED 1
RUN apt-get update
RUN apt-get install python3-dev default-libmysqlclient-dev gcc -y
COPY ./requirements.txt /requirements.txt
RUN pip install -r /requirements.txt
RUN mkdir /app
WORKDIR /app
COPY . /app
ドッキングウィンドウ-compose.yaml
version: "3"
services:
eitan-application:
restart: always
build:
context: .
ports:
- "8000:8000"
volumes:
- ./eitan:/app
command: >
sh -c "python3 manage.py runserver 0.0.0.0:8000
&& python3 manage.py makemigrations
&& python3 manage.py migrate"
depends_on:
- mysql_db
mysql_db:
image: mysql:5.6
command: mysqld --default-authentication-plugin=mysql_native_password
volumes:
- "./mysql:/var/lib/mysql"
ports:
- "3306:3306"
restart: always
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=root
- MYSQL_USER=root
- MYSQL_PASSWORD=root
settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'my-app-db',
'USER': 'root',
'PASSWORD': 'root',
'HOST': 'mysql_db',
'PORT': 3307,
}
}
makozaki:
bind: address already in use
あなたには、いくつかのローカルデータベースを実行していることを示唆しています。私はせずに、それをテストしようと思いますので、ポート3306を公開していないドッキングウィンドウ・コンネットワークのアクセスデータベースの外部に必要としない場合
...
ports:
- "3306:3306"
...
でまた、settings.py
あなたがポートに接続するmysql_db:3307
ので、ポート3306をデフォルトに変更します。
あなたが使用してローカルホスト、その後settings.pyコネクト上のいくつかの他のポートへのデータベースポートを露出させた場合でもmysql_db
ネットワークをので、あなたはDjangoの設定で、このポートを変更しないでください。