diff --git a/Dockerfile b/Dockerfile index 1966d43..aaaf4f2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,14 @@ FROM node:22 WORKDIR /app -COPY package.json ./ -COPY package-lock.json ./ +COPY package.json package-lock.json ./ RUN npm ci COPY . . RUN npm run build -EXPOSE 3000 -CMD ["npm", "start"] \ No newline at end of file +ENV HOST=0.0.0.0 +ENV PORT=4321 +EXPOSE 4321 +CMD ["node", "./dist/server/entry.mjs"] \ No newline at end of file diff --git a/src/api/client.ts b/src/api/client.ts index bd1ccec..09833bf 100644 --- a/src/api/client.ts +++ b/src/api/client.ts @@ -2,6 +2,16 @@ import createClient from 'openapi-fetch' import { type schema } from './schema' +function getApiBaseUrl(): string { + if (typeof import.meta !== 'undefined' && import.meta.env?.PUBLIC_API_URL) { + return import.meta.env.PUBLIC_API_URL + } + if (typeof process !== 'undefined' && process.env.PUBLIC_API_URL) { + return process.env.PUBLIC_API_URL + } + return 'http://localhost:1337/api/' +} + export const client = createClient({ - baseUrl: 'http://localhost:1337/api/', + baseUrl: getApiBaseUrl(), }) diff --git a/src/pages/[slug].astro b/src/pages/[slug].astro index 85e2fd2..6d56844 100644 --- a/src/pages/[slug].astro +++ b/src/pages/[slug].astro @@ -1,50 +1,28 @@ --- -export const prerender = true - import Layout from '../layouts/Layout.astro' import '../styles/globals.css' import { Header } from '../sections/Header' import { Footer } from '../sections/Footer' import { Enum_Category_Group } from '../graphql/graphql' import { CategoryView } from '../views/CategoryView' -import type { MenuItemsQuery } from '../graphql/graphql' -import type { SiteConfigContact } from '../lib/cms/contact/types' import { siteConfigQuery } from '../graphql-documents/site-config.gql.generated' import { menuItemsQuery } from '../graphql-documents/menu-items.gql.generated' import { categoryQuery } from '../graphql-documents/category.gql.generated' -export async function getStaticPaths() { - const [siteResult, menuItemsResult] = await Promise.all([siteConfigQuery.execute(), menuItemsQuery.execute()]) - if (siteResult.errors?.length) { - throw new Error(siteResult.errors.map(e => e.message).join(', ')) - } - const contacts = siteResult.data?.siteConfig?.contacts?.filter(c => c != null) ?? [] - if (menuItemsResult.errors?.length) { - throw new Error(menuItemsResult.errors.map(e => e.message).join(', ')) - } - const menuItems = (menuItemsResult.data?.categories?.filter(c => c != null) ?? []).sort( - (a, b) => a.sortOrder - b.sortOrder - ) - const solutionCategories = menuItems.filter(c => c.group === Enum_Category_Group.Solution) - const serviceCategories = menuItems.filter(c => c.group === Enum_Category_Group.Service) - - return menuItems.map(category => ({ - params: { slug: category.slug }, - props: { - contacts, - solutionCategories, - serviceCategories, - }, - })) +const [siteResult, menuItemsResult] = await Promise.all([siteConfigQuery.execute(), menuItemsQuery.execute()]) +if (siteResult.errors?.length) { + throw new Error(siteResult.errors.map(e => e.message).join(', ')) } - -interface Props { - contacts: SiteConfigContact[] - solutionCategories: NonNullable[] - serviceCategories: NonNullable[] +const contacts = siteResult.data?.siteConfig?.contacts?.filter(c => c != null) ?? [] +if (menuItemsResult.errors?.length) { + throw new Error(menuItemsResult.errors.map(e => e.message).join(', ')) } +const menuItems = (menuItemsResult.data?.categories?.filter(c => c != null) ?? []).sort( + (a, b) => a.sortOrder - b.sortOrder +) +const solutionCategories = menuItems.filter(c => c.group === Enum_Category_Group.Solution) +const serviceCategories = menuItems.filter(c => c.group === Enum_Category_Group.Service) -const { contacts, solutionCategories, serviceCategories } = Astro.props as Props const slug = Astro.params.slug if (!slug) { diff --git a/src/pages/index.astro b/src/pages/index.astro index 4caa625..4e24092 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -1,6 +1,4 @@ --- -export const prerender = true - import Layout from '../layouts/Layout.astro' import '../styles/globals.css' import { Header } from '../sections/Header'