version: '3.7'
services:
shinyproxy:
build: /home/administrator/shinyproxy
deploy:
replicas: 3
#placement:
#constraints:
#- node.hostname==node1
user: root:root
hostname: shinyproxy
image: localhost:5000/shinyproxy-example
networks:
- sp-example-net
volumes:
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
- type: bind
source: /home/administrator/shinyproxy/application.yml
target: /opt/shinyproxy/application.yml
ports:
- 4000:4000
mariadb:
image: mariadb
networks:
- sp-example-net
volumes:
- type: bind
source: /home/administrator/mariadbdata
target: /var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: keycloak
MYSQL_USER: keycloak
MYSQL_PASSWORD: password
deploy:
placement:
constraints:
- node.hostname==spm1anadev1
keycloak:
image: jboss/keycloak
networks:
- sp-example-net
volumes:
- type: bind
source: /home/administrator/certs/fullchain.pem
target: /etc/x509/https/tls.crt
- type: bind
source: /home/administrator/certs//privkey.pem
target: /etc/x509/https/tls.key
#- /theme/govuk-social-providers/:/opt/jboss/keycloak/themes/govuk-social-providers/
environment:
- PROXY_ADDRESS_FORWARDING=true
- KEYCLOAK_USER=myadmin
- KEYCLOAK_PASSWORD=mypassword
ports:
- 8443:8443
deploy:
placement:
constraints:
- node.hostname==node1
networks:
sp-example-net:
driver: overlay
attachable: true
Я использую следующую настройку для моего docker -warm кластера. Развертывание работает нормально, но когда я создаю 3 реплики моей службыinyproxy, я заканчиваю перенаправление l oop. Проблема может заключаться в том, что keycloak не знает, из какой реплики службы происходит перенаправление, поэтому я получаю отправку взад и вперед от экземпляраinyproxy до аутентификации keycloak.
Полагаю, я не первый, кто сталкивается с этой проблемой, но я не нашел решения для этого. Кто-нибудь может мне помочь?
Спасибо!
Редактировать: я использую следующий Dockerfile для создания моего сервиса Shinyproxy.
FROM openjdk:8-jre
COPY certificate.pfx $JAVA_HOME/jre/lib/security/certificate.pfx
RUN \
cd $JAVA_HOME/jre/lib/security \
keytool -importkeystore -srckeystore certificate.pfx -srcstorepass -changeit -srcstoretype pkcs12 -destkeystore cacerts -deststorepass changeit -deststoretype JKS
RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.0.jar -O /opt/shinyproxy/shinyproxy.jar
COPY application.yml /opt/shinyproxy/application.yml
COPY templates /opt/shinyproxy/templates
WORKDIR /opt/shinyproxy/
CMD ["java", "-jar", "/opt/shinyproxy/shinyproxy.jar"]
Этот сервис также использует файл application.yml, который использует секретные данные ключей ключей для аутентификации:
proxy:
port: 4000
template-path: /opt/shinyproxy/templates/2col
authentication: keycloak
admin-groups: admins
container-backend: docker-swarm
docker:
internal-networking: true
container-network: test_sp-example-net
specs:
- id: 01_hello
display-name: Hello Application
description: Application which demonstrates the basics of a Shiny app
container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
container-image: openanalytics/shinyproxy-demo
container-network: "${proxy.docker.container-network}"
access-groups: test
- id: euler
display-name: Euler's number
container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
container-image: euler-docker
container-network: "${proxy.docker.container-network}"
access-groups: test
keycloak:
realm: master
auth-server-url: https://analytics.data-mastery.com/auth/
resource: shinyoid
credentials-secret: xxx
logging:
file:
shinyproxy.log