Я настраиваю docker-for-windows
на своем персональном компьютере.
Когда я недавно установил его на своем офисном ноутбуке, у меня возникла та же проблема, но она просто перестала происходить.
Так что я застрял с этим:
У меня есть работающий в докере проект (на моем другом компьютере) с docker-compose.yml
, подобным этому:
version: '2'
services:
web:
depends_on:
- db
build: .
env_file: ./docker-compose.env
command: bash ./run_web_local.sh
volumes:
- .:/srv/project
ports:
- 8001:8001
links:
- db
- rabbit
restart: always
Dockerfile:
### STAGE 1: Build ###
# We label our stage as 'builder'
FROM node:8-alpine as builder
RUN npm set progress=false && npm config set depth 0 && npm cache clean --force
# build backend
ADD package.json /tmp/package.json
ADD package-lock.json /tmp/package-lock.json
RUN cd /tmp && npm install
RUN mkdir -p /backend-app && cp -a /tmp/node_modules /backend-app
### STAGE 2: Setup ###
FROM python:3
# Install Python dependencies
COPY requirements.txt /tmp/requirements.txt
RUN pip3 install -U pip
RUN pip3 install --no-cache-dir -r /tmp/requirements.txt
# Set env variables used in this Dockerfile (add a unique prefix, such as DOCKYARD)
# Local directory with project source
ENV PROJECT_SRC=.
# Directory in container for all project files
ENV PROJECT_SRVHOME=/srv
# Directory in container for project source files
ENV PROJECT_SRVPROJ=/srv/project
# Create application subdirectories
WORKDIR $PROJECT_SRVPROJ
RUN mkdir media static staticfiles logs
# make folders available for other containers
VOLUME ["$PROJECT_SRVHOME/media/", "$PROJECT_SRVHOME/logs/"]
# Copy application source code to SRCDIR
COPY $PROJECT_SRC $PROJECT_SRVPROJ
COPY --from=builder /backend-app/node_modules $PROJECT_SRVPROJ/node_modules
# Copy entrypoint script into the image
WORKDIR $PROJECT_SRVPROJ
# EXPOSE port 8000 to allow communication to/from server
EXPOSE 8000
CMD ["./run_web.sh"]
докер-compose.env:
C_FORCE_ROOT=True
DJANGO_CELERY_BROKER_URL=amqp://admin:mypass@rabbit:5672//
DJANGO_DATABASE_ENGINE=django.db.backends.mysql
DJANGO_DATABASE_NAME=project-db
DJANGO_DATABASE_USER=project-user
DJANGO_DATABASE_PASSWORD=mypassword
DJANGO_DATABASE_HOST=db
DJANGO_ALLOWED_HOSTS=127.0.0.1,localhost
DJANGO_DEBUG=True
DJANGO_USE_DEBUG_TOOLBAR=off
DJANGO_TEST_RUN=off
PYTHONUNBUFFERED=0
run_web_local.sh:
#!/bin/bash
echo django shell commands
python ./manage.py migrate
echo Starting django server on 127.0.0.1:8000
python ./manage.py runserver 127.0.0.1:8000
Когда я звоню docker-compose up web
, я получаю следующую ошибку:
web_1 | bash: ./run_web_local.sh: такого файла или каталога нет
- Я проверил окончания строк, они UNIX
- файл существует как в файловой системе, так и внутри контейнера
- Я могу позвонить
bash run_web_local.sh
с моего Windows PowerShell и внутри контейнера
- Я изменил разрешения UNIX внутри контейнера
- Я пропустил
bash
в command
в команде docker-compose
. И пробовал с обратной косой чертой, без точки и т. Д.
- я переустановил докер
- Я пытался перейти на версию 3
- Docker утверждает, что имеет подключение к моему общему диску C
И: Точно такая же настройка работает на моем другом ноутбуке.
Есть идеи? Все два миллиона сообщений на github не решили проблему для меня.
Спасибо!
Обновление
Удаление volumes:
из docker-compose заставляет его работать , как указано здесь , но у меня нет мгновенного отображения. Это очень важно для меня ...