Влад
docker-compose.yml в студию
--- version: "3.9" services: 3x-ui: image: ghcr.io/mhsanaei/3x-ui:latest container_name: 3x-ui hostname: yourhostname volumes: - $PWD/db/:/etc/x-ui/ - $PWD/cert/:/root/cert/ environment: XRAY_VMESS_AEAD_FORCED: "false" tty: true network_mode: host restart: unless-stopped
Влад
network_mode: host что и требовалось доказать
так а где связь, там проксирование идёт черtp NPM который в режиме bridge. Это раз. Два - adguard тоже в режиме хоста, но он получает серые ip в логах клиентов, если обращаться к нему по DNS имени
Влад
и опять же вопрос с ACL настроенными в самом NPM. Они же как то работают корректно
Влад
Я не говорю, что ты не прав, просто я пытаюсь понять эту схему, почему там работает а тут нет
Максим
ща мы будем гадать на кофейной гуще, почему в один сервис пришел один IP, а в другом он отличается, при том, что полный docker-compoes.yml и конфиги ты так и не прислал
Максим
это полный компоуз вроде, от adguard тоже прислать?
естественно. как ты сравнивать два композа, если прислал только один, а вместо второго null?
Максим
и все описание схемы проксирования + конфиги
Влад
естественно. как ты сравнивать два композа, если прислал только один, а вместо второго null?
version: "3.8" services: adguardhome: image: adguard/adguardhome:latest container_name: adguard hostname: adguard volumes: - /app/adguard/work:/opt/adguardhome/work - /app/adguard/conf:/opt/adguardhome/conf network_mode: host restart: unless-stopped version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: npm restart: unless-stopped ports: - '80:80' - '443:443' environment: #DISABLE_IPV6: 'true' REAL_IP_HEADER: "X-Forwarded-For" FORWARD_PROXY_SELF_SIGNED_SSL: 'true' REAL_IP_FROM: '0.0.0.0/0' TRUSTED_PROXIES: "172.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16" volumes: - ./data/npm:/data - ./letsencrypt:/etc/letsencrypt networks: dockerlan: ipv4_address: 172.25.0.3 volumes: - ./data/mysql:/var/lib/mysql networks: dockerlan: ipv4_address: 172.25.0.4 networks: dockerlan: external: true name: dockerlan
Влад
ACL в NPM которые почему то работают
Максим
version: "3.8" services: adguardhome: image: adguard/adguardhome:latest container_name: adguard hostname: adguard volumes: - /app/adguard/work:/opt/adguardhome/work - /app/adguard/conf:/opt/adguardhome/conf network_mode: host restart: unless-stopped version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' container_name: npm restart: unless-stopped ports: - '80:80' - '443:443' environment: #DISABLE_IPV6: 'true' REAL_IP_HEADER: "X-Forwarded-For" FORWARD_PROXY_SELF_SIGNED_SSL: 'true' REAL_IP_FROM: '0.0.0.0/0' TRUSTED_PROXIES: "172.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16" volumes: - ./data/npm:/data - ./letsencrypt:/etc/letsencrypt networks: dockerlan: ipv4_address: 172.25.0.3 volumes: - ./data/mysql:/var/lib/mysql networks: dockerlan: ipv4_address: 172.25.0.4 networks: dockerlan: external: true name: dockerlan
цепочку запросов к твоим сервисам опиши - на какой хост и порт переходит пользователь, куда дальше происходит проксирование, и т.д.
Максим
на скрине "есть домен, проксируй запросы к нему вот туда". откуда я знаю, к какому IP (хоста, какого-то еще прокси) привязан этот домен
Влад
Влад
проксирование идёт на тот же белый ip к которому и сам домен привязан
Влад
> и порт сервиса какого из
? не понимаю вопроса. в одном случае один сервис на скрине, во втором случае второй сервис, так же на скрине
Максим
у сервисов есть названия. я ебу какой из них первый, а какой второй, во всей этой цепочке проксирования
Максим
я просил ее описать полностью, получаю какие-то рваные куски инфы. не хочешь описывать - будешь разбираться сам
Влад
у сервисов есть названия. я ебу какой из них первый, а какой второй, во всей этой цепочке проксирования
так я не понимаю что нужно?? всё описал что есть на скрине все данные. Пишешь в адресной строке ag2.***.ru происходит порксирование на 185.***:4430/ Для примера есть другой контейнер в котором отличается только DNS имя и порт. ip адрес тот же. Что ещё нужно то?? что значит первый второй?? это не связанные сервисы. Общий там только NPM который проксирует
Максим
https://github.com/AdguardTeam/AdGuardHome/issues/5768#issuecomment-2162191049
Максим
если проблема действительно в этом, то вместо docker-proxy используется нормальное проксирование через iptables, сохраняющее оригинальный IP адрес запроса, и в таком случае я был неправ. нахера правда docker-proxy таки нужен, я все равно не понял
Максим
Влад
AGH
а всё понял
Влад
AGH
хм
Влад
0.0.0.0 типа тоже надо?
Максим
Влад
естественно
хм, ну собственно, это помогло
Влад
только тогда вопрос, какую потенциальную угрозу это открывает, если по умолчанию там только локальные ip добавлены
Dilshod
Доброго времени суток! У меня есть телеграм бот, хочу его залить на сервак, какие бесплатные сервера существуют кроме heroku
Ярослав
Доброго времени суток! У меня есть телеграм бот, хочу его залить на сервак, какие бесплатные сервера существуют кроме heroku
Python any where. Или старый телефон на андроиде. Но как ни крути, виртуалка за 200₽ в месяц избавит от головных болей
x`
делаю сборку на серваке и по итогу фронту зависимости ебанут долго загружаются и по итогу ничего не собирается вот docker-compose: version: '3.8' services: nginx: image: nginx:stable-alpine container_name: paradox_nginx ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf restart: on-failure networks: - default paradox_db: ... paradox_backend: .... paradox_frontend: build: context: ./frontend dockerfile: Dockerfile.frontend container_name: paradox_frontend ports: - "3000:3000" volumes: - ./frontend:/app stdin_open: true tty: true depends_on: - paradox_backend environment: - API_URL=http://paradox_backend:8000 networks: - default volumes: postgres_data: networks: default: name: paradox_network driver: bridge
x`
в чем может быть трабл?
Удаленный аккаунт
в чем может быть трабл?
а там в описании сети default ошибки нет случаем?
x`
лучше убрать сеть эту?
Удаленный аккаунт
лучше убрать сеть эту?
Мне просто сам дизайн на первый взгляд не нравится, т.е. везде default, а потом переопределение имени.
Удаленный аккаунт
вместо default должно быть paradox_default?
ну логически везде прописать paradox_network. так будет читабельнее.
Удаленный аккаунт
а есть? я просто хз как чекнуть
отключи кэш при сборке, чтобы глянуть полный лог. docker compose build --no-cache
x`
просто памяти добавил на сервер, хотя мб не из за этого не работало
x`
но у меня другая тепреь проблема
x`
x`
x`
ну вот я захожу на сайт по домену а оно не возврщает ничего
x`
ну вот чисто белое все, хотя так не должно
x`
по логам видно что бэк все норм отдает
x`
а ну тут нету
Махмуд
вот так: docker-compose up -d --no-deps --build "$SERVICE_NAME" перезапуск нормально делать? если у меня образ собран, запушен и спулен? Я хочу перезапустить сервис из нового контейнера
Махмуд
Зачем --build, если образ уже есть?
видимо, тем, кто собирал до этого, так было проще
Махмуд
echo "$REGISTRY_PASS" | docker login $REGISTRY -u "$REGISTRY_USER" --password-stdin это же более "безопасная" конструкция для использования в пайплайнах, чем просто docker login -u "$REGISTRY_USER" -p "$REGISTRY_PASS" "$REGISTRY" ?
Махмуд
Если в CI REGISTRY_PASS помечен как переменная, содержащая секрет, то какая разница - в логах он все равно будет заменён на звёздочки
ну да, защищённая типа но у сервера могут быть свои логи? так в список процессов (локальный) не попадёт же?
Rose
Привет, Маргарита Микулина! Добро пожаловать в RU.Docker — Официальное Русское Сообщество! Если ты не 🤖 ты знаешь что делать :)
x`
nginx-1 | 2024/09/26 14:23:39 [error] 9#9: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 212.5.158.35, server: paradox-shop.ru, request: "GET / HTTP/1.1", host: "paradox-shop.ru" nginx-1 | 212.5.158.35 - - [26/Sep/2024:14:23:39 +0000] "GET / HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36" nginx-1 | 2024/09/26 14:23:39 [error] 9#9: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 212.5.158.35, server: paradox-shop.ru, request: "GET / HTTP/1.1", host: "paradox-shop.ru" nginx-1 | 212.5.158.35 - - [26/Sep/2024:14:23:39 +0000] "GET / HTTP/1.1" 403 555 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36" nginx.conf: events { worker_connections 1024; } http { server { listen 80; server_name paradox-shop.ru www.paradox-shop.ru; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name paradox-shop.ru www.paradox-shop.ru; ssl_certificate /etc/letsencrypt/live/paradox-shop.ru/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/paradox-shop.ru/privkey.pem; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html; } } } docker-compose.yaml version: '3.8' services: nginx: image: nginx:stable-alpine user: root ports: - "80:80" - "443:443" volumes: - './nginx.conf:/etc/nginx/nginx.conf' - '/etc/letsencrypt:/etc/letsencrypt' - './frontend/build:/usr/share/nginx/html' depends_on: - paradox_backend - paradox_frontend networks: - default command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'" paradox_db: image: postgres:15.8-alpine container_name: paradox_db ports: - "5432:5432" environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - POSTGRES_DB=${DB_NAME} volumes: - postgres_data:/var/lib/postgresql/data - ./paradox.sql:/docker-entrypoint-initdb.d/paradox.sql restart: on-failure networks: - default paradox_backend: build: context: ./backend dockerfile: Dockerfile.backend volumes: - ./backend:/app environment: - POSTGRES_USER=${POSTGRES_USER} - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} - DB_HOST=paradox_db - DB_PORT=${DB_PORT} - DB_NAME=${DB_NAME} - BILEE_SHOP_ID=${BILEE_SHOP_ID} - BILEE_PASSWORD=${BILEE_PASSWORD} - BOT_TOKEN=${BOT_TOKEN} - BOT_URL=${BOT_URL} - CONFIG_PATH=${CONFIG_PATH} restart: on-failure container_name: paradox_backend ports: - 8000:8000 depends_on: - paradox_db command: sh -c "alembic upgrade head && uvicorn src.main.main:app --host 0.0.0.0 --port 8000 --reload & python -m src.bot.app.main" networks: - default paradox_frontend: build: context: ./frontend dockerfile: Dockerfile.frontend container_name: paradox_frontend ports: - "3000:3000" volumes: - ./frontend:/app stdin_open: true tty: true depends_on: - paradox_backend environment: - API_URL=http://paradox_backend:8000 networks: - default volumes: postgres_data: networks: default: name: paradox_network driver: bridge Dockerfile.frontend FROM node:20-alpine AS build WORKDIR /app COPY package*.json . RUN npm ci COPY . . RUN npm run build FROM nginx:stable-alpine COPY --from=build /app/build /usr/share/nginx/html COPY --from=build /app/nginx.conf /etc/nginx/conf.d/default.conf EXPOSE 3000 RUN chmod -R 755 /usr/share/nginx/html CMD ["nginx", "-g", "daemon off;"] frontend/nginx.conf
x`
server { listen 3000; location / { root /var/www/dist; index index.html index.htm; try_files $uri $uri/ /index.html =404; } include /etc/nginx/extra-conf.d/*.conf; } когда я вхожу на страницу в браузере то пишет 403 forbidden nginx, как можно это пофиксиьь? В ошибке пишет что directory index is forbidden
Ivan
ты билдишь фронт для того чтобы нджинкс контейнером подцепить директорию ./frontend/build? зачем так усложнять, сделай всё в одном
x`
что все в одном
Eugene
ну заработает. потом починишь права)
Ivan
ну заработает. потом починишь права)
нет ничего постоянного чем временное)
Ivan
это товарищу выше наверное
TheOneReborn
BLS-bot/ │ ├── app/ │ ├── database/ │ ├── files/ │ ├── scripts/ │ │ └── (other scripts) │ └── dockerfiles/ │ ├── Dockerfile │ ├── docker-compose.yml │ └── browser_login_container.py │ ├── .env ├── .gitignore ├── venv/ (virtual environment) ├── main.py ├── README.md └── requirements.txt Это структура проекта. А вот, что написано в Dockerfile: # Set the working directory inside the container WORKDIR /app # Copy the requirements.txt from the project root to the container COPY ../../requirements.txt /app/ # Copy the container script from the dockerfiles directory into the container COPY ./app/dockerfiles/browser_login_container.py /app/scripts/ # Copy the entire scripts directory for access to necessary scripts COPY ./app/scripts /app/scripts/ И docker-compose.yml: build: context: ../.. # Set context to project root to access requirements.txt dockerfile: ./app/dockerfiles/Dockerfile Выполняю из директории с docker-compose.yml и Dockerfile следующие команды: docker-compose down docker-compose build --no-cache docker-compose up Контейнер собирается, но выдаёт ошибку: python3: can't open file '/app/scripts/browser_login_container.py': [Errno 2] No such file or directory