Connect to local mysql server on ubuntu from docker container
I have VPS server with Ubuntu 18.04.4 LTS Try to start Django application in docker container and connect application to MySql server on Ubuntu
docker-compose.yml
version: "3"
services:
redis:
restart: always
image: "redis:alpine"
hostname: localhost
container_name: redis
ports:
- '6379:6379'
backend:
restart: always
build:
context: .
args:
- SECRET_KEY=<not_empty>
- DEBUG=False
- DATABASE_NAME=beta
- DATABASE_USER=root
- DATABASE_PASSWORD=root
- DATABASE_HOST=host.docker.internal
container_name: backend
image: backend
ports:
- "8000:8000"
links:
- redis
depends_on:
- redis
Dockerfile
FROM python:3.7-alpine
ENV PYTHONUNBUFFERED 1
RUN mkdir /backend
WORKDIR /backend
COPY . .
RUN apk update \
&& apk add libffi-dev openssl-dev \
&& apk add mysql mysql-client \
&& apk add --no-cache jpeg-dev zlib-dev \
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add --no-cache mariadb-dev
COPY ./requirements.txt /requirements.txt
RUN pip3 install -r /requirements.txt
ARG SECRET_KEY
ENV SECRET_KEY=$SECRET_KEY
ARG DEBUG
ENV DEBUG=$DEBUG
ARG DATABASE_NAME
ENV DATABASE_NAME=$DATABASE_NAME
ARG DATABASE_USER
ENV DATABASE_USER=$DATABASE_USER
ARG DATABASE_PASSWORD
ENV DATABASE_PASSWORD=$DATABASE_PASSWORD
ARG DATABASE_HOST
ENV DATABASE_HOST=$DATABASE_HOST
RUN apk del build-deps
CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000", "--settings=personality.settings" ]
djsngo database settings
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': os.environ['DATABASE_NAME'],
'USER': os.environ['DATABASE_USER'],
'PASSWORD': os.environ['DATABASE_PASSWORD'],
'HOST': os.environ['DATABASE_HOST'],
'PORT': '3306',
}
}
tried different ways to start the container
- docker run --rm -p 8000:8000 backend
- docker run --rm -p 8000:8000 -e DATABASE_HOST=localhost backend
- docker run --rm -p 8000:8000 --network=host -e DATABASE_HOST=localhost backend
- docker run --rm -p 8000:8000 --add-host=host.docker.internal:host-gateway -e DATABASE_HOST=localhost backend
- docker run --rm -p 8000:8000 --add-host=host.docker.internal:172.17.0.1 -e DATABASE_HOST=localhost backend
etc ..
always i get error
django.db.utils.OperationalError: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)")
on windows this container start and connect with my local mysql on windows
docker run --rm -p 8000:8000 -e DATABASE_HOST=host.docker.internal backend
please help, thanks