瀏覽代碼

fix: add port to api url if it is not 80

Nicolas Meienberger 2 年之前
父節點
當前提交
68191d95b1

+ 3 - 2
docker-compose.dev.yml

@@ -93,8 +93,9 @@ services:
     networks:
     networks:
       - tipi_main_network
       - tipi_main_network
     environment:
     environment:
-      - INTERNAL_IP=${INTERNAL_IP}
-      - DOMAIN=${DOMAIN}
+      INTERNAL_IP: ${INTERNAL_IP}
+      DOMAIN: ${DOMAIN}
+      NGINX_PORT: ${NGINX_PORT-80}
     volumes:
     volumes:
       - ${PWD}/packages/dashboard/src:/dashboard/src
       - ${PWD}/packages/dashboard/src:/dashboard/src
       # - /dashboard/node_modules
       # - /dashboard/node_modules

+ 1 - 0
docker-compose.rc.yml

@@ -99,6 +99,7 @@ services:
       INTERNAL_IP: ${INTERNAL_IP}
       INTERNAL_IP: ${INTERNAL_IP}
       NODE_ENV: production
       NODE_ENV: production
       DOMAIN: ${DOMAIN}
       DOMAIN: ${DOMAIN}
+      NGINX_PORT: ${NGINX_PORT-80}
     labels:
     labels:
       traefik.enable: true
       traefik.enable: true
       traefik.http.routers.dashboard-redirect.rule: PathPrefix("/")
       traefik.http.routers.dashboard-redirect.rule: PathPrefix("/")

+ 1 - 0
docker-compose.yml

@@ -100,6 +100,7 @@ services:
       INTERNAL_IP: ${INTERNAL_IP}
       INTERNAL_IP: ${INTERNAL_IP}
       NODE_ENV: production
       NODE_ENV: production
       DOMAIN: ${DOMAIN}
       DOMAIN: ${DOMAIN}
+      NGINX_PORT: ${NGINX_PORT-80}
     labels:
     labels:
       traefik.enable: true
       traefik.enable: true
       traefik.http.routers.dashboard-redirect.rule: PathPrefix("/")
       traefik.http.routers.dashboard-redirect.rule: PathPrefix("/")

+ 7 - 3
packages/dashboard/src/hooks/useCachedRessources.ts

@@ -16,7 +16,7 @@ const fetcher: BareFetcher<any> = (url: string) => {
 };
 };
 
 
 export default function useCachedResources(): IReturnProps {
 export default function useCachedResources(): IReturnProps {
-  const { data } = useSWR<{ ip: string; domain: string }>('api/ip', fetcher);
+  const { data } = useSWR<{ ip: string; domain: string; port: string }>('api/ip', fetcher);
   const { baseUrl, setBaseUrl, setInternalIp, setDomain } = useSytemStore();
   const { baseUrl, setBaseUrl, setInternalIp, setDomain } = useSytemStore();
   const [isLoadingComplete, setLoadingComplete] = useState(false);
   const [isLoadingComplete, setLoadingComplete] = useState(false);
   const [client, setClient] = useState<ApolloClient<unknown>>();
   const [client, setClient] = useState<ApolloClient<unknown>>();
@@ -35,13 +35,17 @@ export default function useCachedResources(): IReturnProps {
   }
   }
 
 
   useEffect(() => {
   useEffect(() => {
-    const { ip, domain } = data || {};
+    const { ip, domain, port } = data || {};
     if (ip && !baseUrl) {
     if (ip && !baseUrl) {
       setInternalIp(ip);
       setInternalIp(ip);
       setDomain(domain);
       setDomain(domain);
 
 
       if (!domain || domain === 'tipi.localhost') {
       if (!domain || domain === 'tipi.localhost') {
-        setBaseUrl(`http://${ip}/api`);
+        if (port === '80') {
+          setBaseUrl(`http://${ip}/api`);
+        } else {
+          setBaseUrl(`http://${ip}:${port}/api`);
+        }
       } else {
       } else {
         setBaseUrl(`https://${domain}/api`);
         setBaseUrl(`https://${domain}/api`);
       }
       }

+ 2 - 1
packages/dashboard/src/pages/api/ip.tsx

@@ -1,6 +1,7 @@
 export default function ip(_: any, res: any) {
 export default function ip(_: any, res: any) {
   const { INTERNAL_IP } = process.env;
   const { INTERNAL_IP } = process.env;
+  const { NGINX_PORT } = process.env;
   const { DOMAIN } = process.env;
   const { DOMAIN } = process.env;
 
 
-  res.status(200).json({ ip: INTERNAL_IP, domain: DOMAIN });
+  res.status(200).json({ ip: INTERNAL_IP, domain: DOMAIN, port: NGINX_PORT });
 }
 }