Пробую развернуть приложение по этому
туториалу.
При запуске команды
docker-compose up --build
получаю ошибку:
Error response from daemon: No command specified
1. Дерево проекта:
└── testapp
├── app
│ ├── __init__.py
│ ├── main.py
│ ├── services
│ └── static
├── traefic
│ └── traefic.toml
├── docker-compose.yaml
├── Dockerfile
└── requirements.txt
2. traefic.toml
[entryPoints]
[entryPoints.web]
address = ":80"
[entryPoints.web.http]
[entryPoints.web.http.redirections]
[entryPoints.web.http.redirections.entryPoint]
to = "websecure"
scheme = "https"
[entryPoints.websecure]
address = ":443"
[accessLog]
[providers]
[providers.docker]
exposedByDefault = false
[certificatesResolvers.letsencrypt.acme]
email = "mymail@mail.ru"
storage= "acme.json"
[certificatesResolvers.letsencrypt.acme.httpChallenge]
entryPoint = "web"
3. docker-compose.yaml
#!/bin/sh
version: "3"
services:
app:
build: .
#command: uvicorn app.main:app --host 0.0.0.0 --port 8000
#restart: always
labels:
- traefik.enable=true
- traefik.http.routers.app-http.rule=Host(`mydomain.ru`)
- traefik.http.routers.app-http.tls=true
- traefik.http.routers.app-http.tls.certresolver=letsencrypt
traefik:
image: traefik:v2.8
ports:
- 80:80
- 443:443
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- $PWD/testapp/traefik/traefik.toml:/etc/traefik/traefik.toml
- traefik-public-certificates:/certificates
volumes:
traefik-public-certificates:
4. Dockerfile
FROM python:3.9
COPY . /code/app
WORKDIR /code/app
RUN pip install -r requirements.txt
EXPOSE 8000
CMD [ "uvicorn", "app.main:app", "--host", "0.0.0.0"]
При развертывании не видит строку
CMD [ "uvicorn", "app.main:app", "--host", "0.0.0.0"]
, хотя если ее явно прописать в
docker-compose.yaml
в строке
command
, то начинает его выполнять. но уже возникает другая ошибка
ModuleNotFoundError: No module named 'app'
Как исправить ошибку "Error response from daemon: No command specified"?