Dmitry
всем привет подскажите пж кто занимался развороткой yolo + conda + cuda + torch + flask пж помогите с докер файлами, есть ли уже готовый скелетон под это все я накидал свой но это не работает 1ый докер # Используем базовый образ NVIDIA с поддержкой CUDA FROM nvidia/cuda:12.1.0-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND=noninteractive ENV CONDA_AUTO_UPDATE_CONDA=false \ PATH=/opt/miniconda/bin:$PATH RUN curl -sLo ~/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh \ && chmod +x ~/miniconda.sh \ && ~/miniconda.sh -b -p /opt/miniconda \ && rm ~/miniconda.sh \ && sed -i "$ a PATH=/opt/miniconda/bin:\$PATH" /etc/environment # Installing python dependencies RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 --version && \ pip3 --version # Установка Python и необходимых пакетов RUN apt-get install -y \ python3-pip \ libgl1-mesa-dev \ libglib2.0-0 \ libsm6 \ libxrender1 \ libxext6 \ git \ ffmpeg \ x264 \ libx264-dev \ && rm -rf /var/lib/apt/lists/* # Установка Python библиотек WORKDIR /usr/src/app/yolov10 RUN git clone -q https://github.com/THU-MIG/yolov10.git . RUN pip install --default-timeout=1000 . WORKDIR /usr/src/app COPY requirements.txt . RUN pip install --default-timeout=1000 -r requirements.txt && \ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # Клонирование и установка YOLOv10 (имя репозитория и путь условные) # Копирование остальных файлов проекта COPY . /usr/src/app # Задание переменной окружения, которая определяет адрес, на котором будет запущен сервер ENV FLASK_APP=main.py ENV FLASK_ENV=development # Запуск приложения при старте контейнера CMD ["flask", "run", "--host=0.0.0.0", "--debug"] второй но в нем пропадают логи в контейнере так как пишутся куда-то в конду и всеравно также как и в первом продолжает на цпу генерить все вместо видюхи # Используем базовый образ NVIDIA с поддержкой CUDA и предустановленной Miniconda FROM continuumio/miniconda3 # Обновление Conda и установка необходимого ПО RUN conda update -n base -c defaults conda -y && \ conda create -n myenv python=3.9 -y && \ conda install -n myenv pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia && \ conda clean -afy SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"] # Добавление необходимых библиотек, которые лучше устанавливать через системный менеджер RUN apt-get update && apt-get install -y \ libgl1-mesa-dev \ build-essential \ libatlas-base-dev \ gfortran \ libfreetype6-dev \ libpng-dev \ libglib2.0-0 \ libsm6 \ libxrender1 \ libxext6 \ git \ ffmpeg \ x264 \ libx264-dev \ && rm -rf /var/lib/apt/lists/* # Установка Python библиотек через pip, если они не доступны в Conda WORKDIR /usr/src/app COPY requirements.txt . RUN pip install --upgrade pip && \ pip install --default-timeout=1000 -r requirements.txt # Установка YOLOv10 RUN git clone -q https://github.com/THU-MIG/yolov10.git /usr/src/app/yolov10 && \ cd /usr/src/app/yolov10 && \ pip install --default-timeout=1000 . # Копирование остальных файлов проекта COPY . . # Задание переменных окружения для Flask ENV FLASK_APP=main.py ENV FLASK_ENV=development # Запуск приложения при старте контейнера CMD ["conda", "run", "-n", "myenv", "flask", "run", "--host=0.0.0.0"]
Dan
всем привет подскажите пж кто занимался развороткой yolo + conda + cuda + torch + flask пж помогите с докер файлами, есть ли уже готовый скелетон под это все я накидал свой но это не работает 1ый докер # Используем базовый образ NVIDIA с поддержкой CUDA FROM nvidia/cuda:12.1.0-runtime-ubuntu20.04 ENV DEBIAN_FRONTEND=noninteractive ENV CONDA_AUTO_UPDATE_CONDA=false \ PATH=/opt/miniconda/bin:$PATH RUN curl -sLo ~/miniconda.sh https://repo.anaconda.com/miniconda/Miniconda3-py38_4.9.2-Linux-x86_64.sh \ && chmod +x ~/miniconda.sh \ && ~/miniconda.sh -b -p /opt/miniconda \ && rm ~/miniconda.sh \ && sed -i "$ a PATH=/opt/miniconda/bin:\$PATH" /etc/environment # Installing python dependencies RUN python3 -m pip --no-cache-dir install --upgrade pip && \ python3 --version && \ pip3 --version # Установка Python и необходимых пакетов RUN apt-get install -y \ python3-pip \ libgl1-mesa-dev \ libglib2.0-0 \ libsm6 \ libxrender1 \ libxext6 \ git \ ffmpeg \ x264 \ libx264-dev \ && rm -rf /var/lib/apt/lists/* # Установка Python библиотек WORKDIR /usr/src/app/yolov10 RUN git clone -q https://github.com/THU-MIG/yolov10.git . RUN pip install --default-timeout=1000 . WORKDIR /usr/src/app COPY requirements.txt . RUN pip install --default-timeout=1000 -r requirements.txt && \ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # Клонирование и установка YOLOv10 (имя репозитория и путь условные) # Копирование остальных файлов проекта COPY . /usr/src/app # Задание переменной окружения, которая определяет адрес, на котором будет запущен сервер ENV FLASK_APP=main.py ENV FLASK_ENV=development # Запуск приложения при старте контейнера CMD ["flask", "run", "--host=0.0.0.0", "--debug"] второй но в нем пропадают логи в контейнере так как пишутся куда-то в конду и всеравно также как и в первом продолжает на цпу генерить все вместо видюхи # Используем базовый образ NVIDIA с поддержкой CUDA и предустановленной Miniconda FROM continuumio/miniconda3 # Обновление Conda и установка необходимого ПО RUN conda update -n base -c defaults conda -y && \ conda create -n myenv python=3.9 -y && \ conda install -n myenv pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia && \ conda clean -afy SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"] # Добавление необходимых библиотек, которые лучше устанавливать через системный менеджер RUN apt-get update && apt-get install -y \ libgl1-mesa-dev \ build-essential \ libatlas-base-dev \ gfortran \ libfreetype6-dev \ libpng-dev \ libglib2.0-0 \ libsm6 \ libxrender1 \ libxext6 \ git \ ffmpeg \ x264 \ libx264-dev \ && rm -rf /var/lib/apt/lists/* # Установка Python библиотек через pip, если они не доступны в Conda WORKDIR /usr/src/app COPY requirements.txt . RUN pip install --upgrade pip && \ pip install --default-timeout=1000 -r requirements.txt # Установка YOLOv10 RUN git clone -q https://github.com/THU-MIG/yolov10.git /usr/src/app/yolov10 && \ cd /usr/src/app/yolov10 && \ pip install --default-timeout=1000 . # Копирование остальных файлов проекта COPY . . # Задание переменных окружения для Flask ENV FLASK_APP=main.py ENV FLASK_ENV=development # Запуск приложения при старте контейнера CMD ["conda", "run", "-n", "myenv", "flask", "run", "--host=0.0.0.0"]
ChatGPT зло, не надо пользоваться им слепо для создания докерфайла
Dmitry
ChatGPT зло, не надо пользоваться им слепо для создания докерфайла
ну вот да поэтому я пришел сюда, потому что если не слепо, то рвать документацию а проект сдавать вот завтра нужно
Akane
ну вот да поэтому я пришел сюда, потому что если не слепо, то рвать документацию а проект сдавать вот завтра нужно
тебе надо пробросить видюху в контейнер, потомучто помоему по дефолту оно не пробрасывается, там или привеледжед мод нужен, или просто примишен конту дать, погугли жпу ин докер контаинер
Akane
ну тогда только лезть в конт и думать почему на спу
Akane
помоему тут не в докере дело
Dmitry
ну ок а логи как вернуть ?
Akane
Akane
обычно все в stdout пишут
Dmitry
походу в конде а так я настроил дебуг чтобы писался в стдаут
Akane
ну тогда смотри docker logs cont_id
Yana
#вакансия #devops #удаленка #middle #senior Вакансия: DevOps engineer (удаленная работа) В настоящее время мы ищем DevOps для работы над проектами. Мы предлагаем: - заработную плату от 1800$ до 3000$; - удалённый формат работы; - fulltime work Требования: - опыт работы с Python 3, PostgreSQL, Apache Spark, ELT tools, Docker swarm/K8s, Ansible, Linux clusters, QA Analysis, Unittest/Pytest, git, GitLab. - опыт работы от 3 лет и выше; - рабочий языки: русский и английский; - уровень: middle и выше Обязанности: - управлять инфраструктурой в составе различных сред в инфраструктуре облачного провайдера; - обслуживать кластеры; - управлять процессами CI/CD; - взаимодействовать с командой разработки; - мониторить и оптимизировать работу инфраструктуры и сервисов. Присылайте ссылку на портфолио и Ваше резюме для рассмотрения! Контакт для связи: @leolomaev
Akane
эм
ну бля, ты очень непонятно и сумбурно обьясняешь)
Awesome
всем привет кто нибудь сталкивался с таким?
Solyar
всем привет кто нибудь сталкивался с таким?
Причину можно считать например в базовом образе питона нет alembic
Solyar
Проверь это)
Solyar
а как это проверить
docker run -it --rm --entrypoint sh python:3.11 И выполнить команду скорее всего так и есть
Сергей
не хочет ниче делать , просто повис
Не знаю, есть ли sh в питон образе, но можно утилитой dive точно посмотреть, что там внутри образа есть. Вангую, как писали выше, alembic внутри образа не окажется
Awesome
все равно
Awesome
Awesome
Awesome
уже мозги плавит, 4часа не могу миграции накатить
Awesome
Awesome
он его даже установил в логах
Сергей
У меня тупое предположение, но в скрине выше ошибка с подключением, может перенести этот RUN в CMD? Что-то вроде CMD ["sh", "-c", "python -m alembic upgrade head && gunicorn ..."]
Сергей
Не могу просто понять, откуда ошибка со скрина
Andrew
Не могу просто понять, откуда ошибка со скрина
потому что ненадо его в рун, положи его в смд
Andrew
можно без python -m
Andrew
а вообще для миграций обычно отдельный контейнер делают
Awesome
Awesome
ЕСТЬ
Awesome
это изза сайта было
Awesome
добавил енв через нижнюю опцию
Awesome
и он принял, через верхнюю наверно не видел вообще переменные
Artur
Подскажите пожалуйста почему получаю такую ошибку. ❯ docker-compose up --build spring-boot-app services.spring-boot-app.environment.[11]: unexpected type <nil> docker-compose.yml spring-boot-app: image: openjdk:17-jdk-slim restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME={DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} - volumes: - ./target/VolunNearApp-0.0.1-SNAPSHOT.jar:/app/app.jar - ./src/main/resources/application.yml:/app/application.yml - ./src/main/resources/roles.sql:/app/roles.sql # command: [ "java", "-Dspring.profiles.active=dev", "-jar", "/app/app.jar" ] command: [ "java", "-jar", "/app/app.jar" ] networks: - volunnear_backend_network
Artur
Лишнее тире в environment
Спасибо, но теперь получаю такую ошибку
Сергей
Сергей
Смотрите, откуда берётся этот путь
Artur
Смотрите, откуда берётся этот путь
тут должен быть прописан? spring-boot-app: image: openjdk:17-jdk-slim restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME={DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} volumes: - ./target/VolunNearApp-0.0.1-SNAPSHOT.jar:/app/app.jar - ./src/main/resources/application.yml:/app/application.yml - ./src/main/resources/roles.sql:/app/roles.sql # command: [ "java", "-Dspring.profiles.active=dev", "-jar", "/app/app.jar" ] command: [ "java", "-jar", "/app/app.jar" ] networks: - volunnear_backend_network
Сергей
Спасибо, но теперь получаю такую ошибку
У вас докер уже собрал образ, ошибка внутри кода. По проекту пройдитесь поиском, и найдите /., это явно баг. А вообще, это уже оффтоп, к докеру не относится
Artur
У вас докер уже собрал образ, ошибка внутри кода. По проекту пройдитесь поиском, и найдите /., это явно баг. А вообще, это уже оффтоп, к докеру не относится
Ок, скажите пожалуйста или я правильно переписал Dockerfile в docker-compose Dockerfile FROM openjdk:17-jdk-slim WORKDIR app COPY target/VolunNearApp-0.0.1-SNAPSHOT.jar app.jar COPY src/main/resources/application-dev.yml application-dev.yml COPY src/main/resources/roles.sql roles.sql CMD ["java", "-Dspring.profiles.active=dev", "-jar", "app.jar"] docker-compose spring-boot-app: image: openjdk:17-jdk-slim restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME={DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} volumes: - ./target/VolunNearApp-0.0.1-SNAPSHOT.jar:/app/app.jar - ./src/main/resources/application.yml:/app/application.yml - ./src/main/resources/roles.sql:/app/roles.sql # command: [ "java", "-Dspring.profiles.active=dev", "-jar", "/app/app.jar" ] command: [ "java", "-jar", "/app/app.jar" ] networks: - volunnear_backend_network
Сергей
Я вообще не уверен, что вы правильно поняли, зачем нужен docker-compose) В целом вариант скорее всего рабочий, но телефоном тоже гвоздь забить можно. Обычно собирают образ из dockerfile (как ваш), а затем в docker-compose прописывают его в image. Пихать в него jar'ник как volume можно, но несколько странно с точки зрения workflow)
Алексей
Ок, скажите пожалуйста или я правильно переписал Dockerfile в docker-compose Dockerfile FROM openjdk:17-jdk-slim WORKDIR app COPY target/VolunNearApp-0.0.1-SNAPSHOT.jar app.jar COPY src/main/resources/application-dev.yml application-dev.yml COPY src/main/resources/roles.sql roles.sql CMD ["java", "-Dspring.profiles.active=dev", "-jar", "app.jar"] docker-compose spring-boot-app: image: openjdk:17-jdk-slim restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME={DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} volumes: - ./target/VolunNearApp-0.0.1-SNAPSHOT.jar:/app/app.jar - ./src/main/resources/application.yml:/app/application.yml - ./src/main/resources/roles.sql:/app/roles.sql # command: [ "java", "-Dspring.profiles.active=dev", "-jar", "/app/app.jar" ] command: [ "java", "-jar", "/app/app.jar" ] networks: - volunnear_backend_network
а зачем вам image:... если юзаете докерфайл?) Ну либо зачем докерфайл, если собираете без него
Сергей
Подскажите пожалуйста, как лучше сделать.
Использовать dockerfile и docker build для сборки образа с вашим приложением, пушить его, куда нужно, и затем поднимать сервис через docker-compose
Artur
Использовать dockerfile и docker build для сборки образа с вашим приложением, пушить его, куда нужно, и затем поднимать сервис через docker-compose
Спасибо, можешь пожалуйста показать на моем примере? Я в докере начинающий , и могу начать сейчаас химичить не правильно )
Сергей
Спасибо, можешь пожалуйста показать на моем примере? Я в докере начинающий , и могу начать сейчаас химичить не правильно )
Завтра. А вообще лучше почитать про докер и docker-compose самому и попробовать написать. Выше отписал, что должно получится, докер файл у тебя есть, нужно только компоуз подправить
Алексей
тогда для билда подцепится ваш докерфайл
Artyom
внутри сети в docker compose можно обращаться по http к opensearch же?
Artyom
нельзя
понял. а в случае с elasticsearch можно?
Akane
понял. а в случае с elasticsearch можно?
бля ну тут не скажу, надо у джейсона стетхома еще раз спрашивать
Artyom
бля ну тут не скажу, надо у джейсона стетхома еще раз спрашивать
нет, просто для меня неожиданно было, что в компоузе с эластиком все ок, а с опенсерчем проблемы
Akane
может его на локалхосте запустил?
Artyom
может его на локалхосте запустил?
все, нашел ошибку, я по внешнему порту ходил
Artur
Я так понимаю, что при запросе http://keycloak:8083/realms/VolunNearRealm , где keycloak - это другой контейнер, spring приложение не может сделать resolve на keycloak . Как это исправить? Ошибки: spring-boot-app-1 | Caused by: java.lang.IllegalArgumentException: Unable to resolve the Configuration with the provided Issuer of "http://keycloak:8083/realms/VolunNearRealm" spring-boot-app-1 | Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://keycloak:8083/realms/VolunNearRealm/.well-known/openid-configuration": Connection refused Они все под одной сетью. networks: volunnear_backend_network: driver: bridge docker-compose services: mysql: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: ${DB_NAME} ports: - "${EXTERNAL_DB_PORT}:${INTERNAL_DB_PORT}" networks: - volunnear_backend_network spring-boot-app: image: volunnear-app:latest restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - EXTERNAL_SPRING_PORT=${EXTERNAL_SPRING_PORT} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME=${DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} networks: - volunnear_backend_network keycloak_postgres_db: image: postgres:latest volumes: - postgres_data_keycloak:/var/lib/postgresql/data environment: POSTGRES_DB: ${KC_POSTGRES_DB} POSTGRES_USER: ${KC_POSTGRES_USER} POSTGRES_PASSWORD: ${KC_POSTGRES_PASSWORD} ports: - "${EXTERNAL_KC_POSTGRES_PORT}:${INTERNAL_KC_POSTGRES_PORT}" networks: - volunnear_backend_network keycloak_postgres_pgadmin: image: dpage/pgadmin4:latest environment: PGADMIN_DEFAULT_EMAIL: ${KC_PGADMIN_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${KC_PGADMIN_PASSWORD} ports: - "${EXTERNAL_KC_PGADMIN_PORT}:${INTERNAL_KC_PGADMIN_PORT}" volumes: - postgres_admin_data:/var/lib/pgadmin depends_on: - keycloak_postgres_db networks: - volunnear_backend_network keycloak: image: quay.io/keycloak/keycloak:latest environment: KEYCLOAK_ADMIN: ${KC_ADMIN} KEYCLOAK_ADMIN_PASSWORD: ${KC_ADMIN_PASSWORD} KC_DB: postgres KC_DB_URL_HOST: keycloak_postgres_db KC_DB_URL_DATABASE: ${KC_POSTGRES_DB} KC_DB_SCHEMA: public KC_DB_USERNAME: ${KC_POSTGRES_USER} KC_DB_PASSWORD: ${KC_POSTGRES_PASSWORD} ports: - "${EXTERNAL_KC_PORT}:${INTERNAL_KC_PORT}" command: - start-dev depends_on: - keycloak_postgres_db networks: - volunnear_backend_network volumes: postgres_data_keycloak: postgres_admin_data: networks: volunnear_backend_network: driver: bridge
phirit
Я так понимаю, что при запросе http://keycloak:8083/realms/VolunNearRealm , где keycloak - это другой контейнер, spring приложение не может сделать resolve на keycloak . Как это исправить? Ошибки: spring-boot-app-1 | Caused by: java.lang.IllegalArgumentException: Unable to resolve the Configuration with the provided Issuer of "http://keycloak:8083/realms/VolunNearRealm" spring-boot-app-1 | Caused by: org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://keycloak:8083/realms/VolunNearRealm/.well-known/openid-configuration": Connection refused Они все под одной сетью. networks: volunnear_backend_network: driver: bridge docker-compose services: mysql: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} MYSQL_DATABASE: ${DB_NAME} ports: - "${EXTERNAL_DB_PORT}:${INTERNAL_DB_PORT}" networks: - volunnear_backend_network spring-boot-app: image: volunnear-app:latest restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - EXTERNAL_SPRING_PORT=${EXTERNAL_SPRING_PORT} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME=${DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} networks: - volunnear_backend_network keycloak_postgres_db: image: postgres:latest volumes: - postgres_data_keycloak:/var/lib/postgresql/data environment: POSTGRES_DB: ${KC_POSTGRES_DB} POSTGRES_USER: ${KC_POSTGRES_USER} POSTGRES_PASSWORD: ${KC_POSTGRES_PASSWORD} ports: - "${EXTERNAL_KC_POSTGRES_PORT}:${INTERNAL_KC_POSTGRES_PORT}" networks: - volunnear_backend_network keycloak_postgres_pgadmin: image: dpage/pgadmin4:latest environment: PGADMIN_DEFAULT_EMAIL: ${KC_PGADMIN_EMAIL} PGADMIN_DEFAULT_PASSWORD: ${KC_PGADMIN_PASSWORD} ports: - "${EXTERNAL_KC_PGADMIN_PORT}:${INTERNAL_KC_PGADMIN_PORT}" volumes: - postgres_admin_data:/var/lib/pgadmin depends_on: - keycloak_postgres_db networks: - volunnear_backend_network keycloak: image: quay.io/keycloak/keycloak:latest environment: KEYCLOAK_ADMIN: ${KC_ADMIN} KEYCLOAK_ADMIN_PASSWORD: ${KC_ADMIN_PASSWORD} KC_DB: postgres KC_DB_URL_HOST: keycloak_postgres_db KC_DB_URL_DATABASE: ${KC_POSTGRES_DB} KC_DB_SCHEMA: public KC_DB_USERNAME: ${KC_POSTGRES_USER} KC_DB_PASSWORD: ${KC_POSTGRES_PASSWORD} ports: - "${EXTERNAL_KC_PORT}:${INTERNAL_KC_PORT}" command: - start-dev depends_on: - keycloak_postgres_db networks: - volunnear_backend_network volumes: postgres_data_keycloak: postgres_admin_data: networks: volunnear_backend_network: driver: bridge
вы или крестик снимите или плавки оденьте, если по 8083 - то и идите на внешний адрес, а по внутреннему топайте на 8080
Artur
вы или крестик снимите или плавки оденьте, если по 8083 - то и идите на внешний адрес, а по внутреннему топайте на 8080
Понял, спасибо. Из-за этого мое приложение работает не корректно, а именно внутри моего спринг бут приложения, security: oauth2: resourceserver: jwt: # If you run on localhost, use the following issuer-uri #issuer-uri: http://localhost:${EXTERNAL_KC_PORT}/realms/${KC_REALM_VOLUNNEAR} # If you run on docker, use the following issuer-uri issuer-uri: http://keycloak:${INTERNAL_KC_PORT}/realms/${KC_REALM_VOLUNNEAR} И тут начинается проблема, ведь кейклок отдельно в контейнере и спрингбу в отдельном контейнере. И когда я делаю, запрос на кейклок с браузера он идет на localhost ,,а не на контейнер keycloak , а у спринг приложения запрос на контейнер keycloak. И в витоге идет ассинхрон. Как в таом случае поступать? docker-compose spring-boot-app: image: volunnear-app:latest restart: on-failure depends_on: - mysql - keycloak ports: - "${EXTERNAL_SPRING_PORT}:${EXTERNAL_SPRING_PORT}" environment: - EXTERNAL_SPRING_PORT=${EXTERNAL_SPRING_PORT} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - DB_HOST=${DB_HOST} - INTERNAL_DB_PORT=${INTERNAL_DB_PORT} - DB_NAME=${DB_NAME} - DB_OPTIONS=${DB_OPTIONS} - SENDER_MAIL_PORT=${SENDER_MAIL_PORT} - SENDER_EMAIL_USERNAME=${SENDER_EMAIL_USERNAME} - SENDER_EMAIL_PASSWORD=${SENDER_EMAIL_PASSWORD} - EXTERNAL_KC_PORT=${EXTERNAL_KC_PORT} - INTERNAL_KC_PORT=${INTERNAL_KC_PORT} - KC_REALM_VOLUNNEAR=${KC_REALM_VOLUNNEAR} networks: - volunnear_backend_network keycloak: image: quay.io/keycloak/keycloak:latest environment: KEYCLOAK_ADMIN: ${KC_ADMIN} KEYCLOAK_ADMIN_PASSWORD: ${KC_ADMIN_PASSWORD} KC_DB: postgres KC_DB_URL_HOST: keycloak_postgres_db KC_DB_URL_DATABASE: ${KC_POSTGRES_DB} KC_DB_SCHEMA: public KC_DB_USERNAME: ${KC_POSTGRES_USER} KC_DB_PASSWORD: ${KC_POSTGRES_PASSWORD} ports: - "${EXTERNAL_KC_PORT}:${INTERNAL_KC_PORT}" command: - start-dev depends_on: - keycloak_postgres_db networks: - volunnear_backend_network networks: volunnear_backend_network: driver: bridge
Andry
Всем привет!!!!
Artur
Если я хочу чтобы все мои контейнеры помимо моей кастомной докерсокй сети общались , общались друг с другом через localhost . Нужно добавлять еще какую-то сеть или достаточно писать localhost вместо имя контейнера
Andry
если хочшь чтобы друг друга видели через базовый хост то тогда пиши
Владимир
localhost это адрес в контейнере петли 127.0.0.1
Лол, я думал ты бот какой то
Andry
host.docker.internal
Andry
Нет я погроммист(( проблемы с докером вот сюда и залез не могу пока решить
Artur
localhost это адрес в контейнере петли 127.0.0.1
У каждого контейнера свой отдельный 127.0.01 или общий на всей контейнеры ?
Andry
криптопро в контейнер пихаю - как только разберусь в чем пробелема - напишу вопрос