Здравствуйте!
Судя по вашему коду и предоставленным файлам, вы правильно сделали, что находитесь в рабочем каталоге `/app` в контейнере Docker. Но есть несколько возможных причин, почему JSON-файл может не создаваться или не сохраняться так, как вы ожидаете.
Вот несколько шагов для устранения неполадок:
1. **Проверка кода**:
Убедитесь, что ваш код действительно вызывается и выполнен. Для этого добавьте больше отладочной информации (например, перед обычной записью в файл) и убедитесь, что код выполняется без ошибок.
```python
import json
json_data = {"name": "John", "age": 30, "city": "New York"}
file_path = "my_data.json"
print("Начало записи в файл...")
with open(file_path, 'w') as f:
json.dump(json_data, f) # Используем json.dump для корректной записи JSON
print("Файл сохранен")
```
2. **Проверьте, где ищете файл**:
Убедитесь, что вы ищете файл `my_data.json` в правильном месте. После запуска `docker-compose up` используйте команду, чтобы зайти в контейнер и посмотреть, есть ли там файл:
```bash
docker exec -it <имя_вашего_контейнера> sh
ls -l /app
```
Замените `<имя_вашего_контейнера>` на имя вашего контейнера, который содержит приложение (`app`).
3. **Обратите внимание на разрешения**:
Иногда может быть проблема с разрешениями на запись в файл. Убедитесь, что контейнер и папки, в которые вы записываете, имеют правильные разрешения. Вы можете попробовать запустить контейнер с пользователем root, добавив следующую строку в ваш Dockerfile:
```dockerfile
USER root
```
4. **Проверка локальной файловой системы**:
Если вы хотите сохранить файл на локальной файловой системе (например, на вашем ПК), используйте привязку каталогов в `docker-compose.yaml` для монтирования директории:
```yaml
services:
app:
build: ./app
volumes:
- ./data:/app/data # Монтирование локальной папки для сохранения файлов
```
Затем измените путь к файлу в вашем коде:
```python
file_path = "data/my_data.json"
```
Убедитесь, что директория `data` существует на вашем хосте.
5. **Логирование ошибок**:
Добавьте обработку исключений, чтобы поймать любые возможные ошибки при работе с файлами:
```python
try:
with open(file_path, 'w') as f:
json.dump(json_data, f)
print("Файл сохранен")
except Exception as e:
print(f"Ошибка при записи файла: {e}")
```
Попробуйте указанные шаги, и это должно помочь вам выяснить, почему файл не создается в вашем случае. Если проблема не решится, пожалуйста, дайте знать, предоставив дополнительные данные о том, что происходит, и я постараюсь помочь!