Для разворачивания FastAPI в контейнере Docker и сделать его доступным в интернете, следуйте этим шагам:
1. Напишите Dockerfile для сборки образа Docker с вашим FastAPI приложением. Пример Dockerfile:
```Dockerfile
FROM tiangolo/uvicorn-gunicorn-fastapi:python3.9
COPY ./app /app
```
2. Соберите образ Docker:
```
docker build -t my-fastapi-app .
```
3. Запустите контейнер с вашим FastAPI приложением:
```
docker run -d -p 80:80 my-fastapi-app
```
Это запустит ваше FastAPI приложение на порту 80 в контейнере Docker.
Чтобы опубликовать контейнеры с PostgreSQL и FastAPI на сервере под своим доменным именем для доступа через Интернет, вам нужно изменить конфигурацию вашего сервера и проксировать запросы с вашего доменного имени на соответствующие контейнеры.
Это можно сделать с помощью инструмента управления контейнерами, такого как Docker Compose, и веб-сервера, например, Nginx. Настройка выглядит примерно так:
1. Создайте файл docker-compose.yml, в котором определены контейнеры для PostgreSQL и FastAPI:
```yaml
version: "3"
services:
postgres:
image: postgres
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
fastapi:
build: .
ports:
- "8000:80"
```
2. Соберите и запустите контейнеры:
```
docker-compose up -d
```
3. Настройте Nginx для проксирования запросов к вашему доменному имени на соответствующие порты контейнеров FastAPI и PostgreSQL.
Пример конфигурации Nginx для проксирования FastAPI на порте 8000:
```
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:8000;
}
}
```
4. Обновите DNS-записи вашего домена, чтобы он указывал на IP-адрес вашего сервера.
Теперь ваши контейнеры с PostgreSQL и FastAPI должны быть доступны через ваше доменное имя по соответствующим портам.