katsudon_qiita
@katsudon_qiita

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Docker環境で変更したファイルをすぐに反映したい.

解決したいこと

Docker環境で変更したファイルをすぐに反映したい.

発生している問題・エラー

Docker環境でFastAPIを触っているが,ローカルで編集した内容がすぐに反映されず,Docker compose upしないと反映されない.

該当するソースコード

FROM python:3.9
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
services:
  backend:
    build: backend
    restart: always
    ports:
      - 8000:8000
    volumes:
      - ./backend:/app
    networks:
      - db_net
    depends_on:
      - db

  frontend:
    build: frontend
    ports:
      - "3000:3000"
    volumes:
      - ./frontend/src:/app/src
      - ./frontend/public:/app/public
    depends_on:
      - backend

  db:
    image: mysql:8.0.27
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
    networks:
      - db_net

volumes:
  db-data:

networks:
  db_net:

自分で試したこと

ボリューム関係がしっかりできていないことが問題だと思っているが解決策が見つかりません.

0

2Answer

Comments

services:
  backend:
    build: backend
    restart: always
    ports:
      - 8000:8000
    networks:
      - db_net
    depends_on:
      - db
    volumes:
      - ./backend:/app:delegated  # 追加

  frontend:
    build: frontend
    ports:
      - "3000:3000"
    volumes:
      - ./frontend/src:/app/src
      - ./frontend/public:/app/public
    depends_on:
      - backend

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MYSQL_DATABASE: ${DB_NAME}
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_PASSWORD}
    ports:
      - "3306:3306"
    volumes:
      - db-data:/var/lib/mysql
      - ./mysql/conf.d:/etc/mysql/conf.d
    networks:
      - db_net

volumes:
  db-data:

networks:
  db_net:

volumes:
- ./backend:/app:delegated

これを追加すると機能しました.

0Like

Your answer might help someone💌