Merhaba ‘docker-compose’ ile bir proje yapıyorum. projeyi herhangi bir sebeple kapatıp açtığımda veriler kayboluyor. Sebebi ne olabilir?
docker-compose restart
deyince de down
& up
deyince de veri kayboluyor.
volume hiç yokmuş gibi yeniden oluşturuluyor. daha önce yaptığım bütün değişiklikler (django admin paneli üzerinden bir şeyler eklleyip siliyorum.) kayboluyor.
docker-compose dosyası:
version: '3.7'
services:
backend:
build: ./backend
container_name: backend
command: python manage.py runserver 0.0.0.0:8000
restart: 'no'
volumes:
- ./backend/:/usr/src/app/
ports:
- 8000:8000
env_file:
- ./.env.dev
depends_on:
- db
frontend:
build: ./frontend
container_name: frontend
command: npm run serve
restart: 'no'
ports:
- 8080:8080
env_file:
- ./.env.dev
depends_on:
- backend
db:
image: postgres:13.0-alpine
container_name: database
restart: 'no'
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./.env.dev
volumes:
postgres_data:
backend Dockerfile
# pull official base image
FROM python:3.8-alpine
# set work directory
WORKDIR /usr/src/app
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apk update \
&& apk add icu-data-full\
&& apk add --no-cache curl gpg gnupg\
&& apk add --no-cache postgresql-dev gcc libc-dev g++ libffi-dev libxml2 python3-dev musl-dev unixodbc unixodbc-dev mariadb-dev
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# copy project
COPY . .
# mssql dependicies
RUN apk add --allow-untrusted msodbcsql17_17.10.1.1-1_amd64.apk \
&& apk add --allow-untrusted mssql-tools_17.10.1.1-1_amd64.apk
# run entrypoint.sh
ENTRYPOINT ["/usr/src/app/entrypoint.sh"]
entrypoint.sh dosyasında projeyi başlatırken veri eklemesi için kod yazmıştım.
#!/bin/sh
if [ "$DATABASE" = "postgres" ]
then
echo "Waiting for postgres..."
while ! nc -z $SQL_HOST $SQL_PORT; do
sleep 0.1
done
echo "PostgreSQL started"
fi
python manage.py flush --no-input
python manage.py makemigrations
python manage.py migrate
python manage.py createcachetable
# create superuser
if [ "$DJANGO_SUPERUSER_USERNAME" ]
then
python manage.py createsuperuser \
--noinput \
--username $DJANGO_SUPERUSER_USERNAME \
--email $DJANGO_SUPERUSER_EMAIL
fi
# create user
python manage.py add_user
# create object samples
python manage.py add_external_data_samples
python manage.py add_tableau_samples
exec "$@"
terminalden proje açıkken ya da kapalıyken baktığımda volume görünüyor. bunu tamamen silip denediğimde de sorun aynı şekilde devam etti.
.../project$ sudo docker volume ls
DRIVER VOLUME NAME
local project_postgres_data
.../project$ sudo docker volume inspect project_postgres_data
[
{
"CreatedAt": "2023-06-22T15:12:07+03:00",
"Driver": "local",
"Labels": {
"com.docker.compose.project": "project",
"com.docker.compose.version": "1.25.0",
"com.docker.compose.volume": "postgres_data"
},
"Mountpoint": "/var/lib/docker/volumes/project_postgres_data/_data",
"Name": "project_postgres_data",
"Options": null,
"Scope": "local"
}
]