我有Docker 2.0 / Python 3.7应用程序,已将其及其随附的Web和数据库映像(下面是docker-compose.yml文件)加载到Docker容器中...
version: '3'
services:
mysql:
restart: always
image: mysql:5.7
environment:
MYSQL_DATABASE: 'maps_data'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'chicommons'
# You can use whatever password you like
MYSQL_PASSWORD: 'password'
# Password for root access
MYSQL_ROOT_PASSWORD: 'password'
ports:
- "3406:3406"
volumes:
- my-db:/var/lib/mysql
web:
restart: always
build: ./web
ports: # to access the container from outside
- "8000:8000"
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/gunicorn maps.wsgi:application -w 2 -b :8000
depends_on:
- mysql
apache:
restart: always
build: ./apache/
ports:
- "9090:80"
links:
- web:web
volumes:
my-db:
这里是控制堆栈的Django部分的Web / Dockerfile ...
FROM python:3.7-slim
RUN apt-get update && apt-get install
RUN apt-get install -y libmariadb-dev-compat libmariadb-dev
RUN apt-get update \
&& apt-get install -y --no-install-recommends gcc \
&& rm -rf /var/lib/apt/lists/*
RUN python -m pip install --upgrade pip
RUN mkdir -p /app/
WORKDIR /app/
COPY requirements.txt requirements.txt
RUN python -m pip install -r requirements.txt
COPY entrypoint.sh /app/
COPY . /app/
RUN ["chmod", "+x", "/app/entrypoint.sh"]
ENTRYPOINT ["/app/entrypoint.sh"]
我的问题是,有没有一种方法可以配置某些东西,以便在对Python文件进行本地更改时,更改立即反映在我正在运行的Docker实例中?现在,如果我进行更改,则必须运行
docker-compose down --rmi all
docker-compose up
您可以想象,这是一个漫长的过程,尤其是在仅更改一个文件的情况下。
将本地系统上的源通过volume和setup Web服务器安装到泊坞窗中的源,并通过文件更改实时重新加载,而使用gunicorn服务器则为--reload参数。
您可以创建一个卷。使用卷,您可以在机器和Docker容器之间共享文件夹。这将在与docker-compose处于同一级别的文件夹“ volumes / web”中以及容器内的/ opt / app中创建一个卷。
这样,您可以在本地工作,并将更改反映在您的Docker容器中。根据入口点的不同,您可以停止应用程序并重新启动它,而无需重新启动容器。
web:
restart: always
build: ./web
ports: # to access the container from outside
- "8000:8000"
env_file: .env
environment:
DEBUG: 'true'
command: /usr/local/bin/gunicorn maps.wsgi:application -w 2 -b :8000
depends_on:
- mysql
volumes:
- ./volumes/web:/opt/app