Обновлен файл docker-compose.yml для передачи переменных окружения в процессе сборки. В Dockerfile добавлены аргументы сборки и установлены соответствующие переменные окружения. Изменен способ обертывания дочерних компонентов в layout.tsx с ApolloProvider на Providers.

This commit is contained in:
Bivekich
2025-07-17 11:32:45 +03:00
parent 83ed577a44
commit 7e77e850bc
4 changed files with 62 additions and 11 deletions

View File

@ -18,6 +18,34 @@ WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules COPY --from=deps /app/node_modules ./node_modules
COPY . . COPY . .
# Определяем build args для переменных окружения, необходимых во время сборки
ARG DATABASE_URL
ARG SMS_AERO_EMAIL
ARG SMS_AERO_API_KEY
ARG SMS_AERO_API_URL
ARG DADATA_API_KEY
ARG DADATA_API_URL
ARG WILDBERRIES_API_URL
ARG OZON_API_URL
ARG JWT_SECRET
ARG SMS_DEV_MODE
# Устанавливаем переменные окружения для build time
ENV DATABASE_URL=$DATABASE_URL
ENV SMS_AERO_EMAIL=$SMS_AERO_EMAIL
ENV SMS_AERO_API_KEY=$SMS_AERO_API_KEY
ENV SMS_AERO_API_URL=$SMS_AERO_API_URL
ENV DADATA_API_KEY=$DADATA_API_KEY
ENV DADATA_API_URL=$DADATA_API_URL
ENV WILDBERRIES_API_URL=$WILDBERRIES_API_URL
ENV OZON_API_URL=$OZON_API_URL
ENV JWT_SECRET=$JWT_SECRET
ENV SMS_DEV_MODE=$SMS_DEV_MODE
# Устанавливаем NODE_ENV для production build
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
# Генерируем Prisma клиент # Генерируем Prisma клиент
RUN npx prisma generate RUN npx prisma generate

View File

@ -1,12 +1,22 @@
version: '3.8'
services: services:
app: app:
build: . build:
context: .
args:
- DATABASE_URL=${DATABASE_URL}
- SMS_AERO_EMAIL=${SMS_AERO_EMAIL}
- SMS_AERO_API_KEY=${SMS_AERO_API_KEY}
- SMS_AERO_API_URL=${SMS_AERO_API_URL}
- DADATA_API_KEY=${DADATA_API_KEY}
- DADATA_API_URL=${DADATA_API_URL}
- WILDBERRIES_API_URL=${WILDBERRIES_API_URL}
- OZON_API_URL=${OZON_API_URL}
- JWT_SECRET=${JWT_SECRET}
- SMS_DEV_MODE=${SMS_DEV_MODE}
ports: ports:
- "3017:3000" - "3017:3000"
env_file: env_file:
- stack.env - .env
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- PORT=3000 - PORT=3000

View File

@ -1,9 +1,6 @@
"use client"
import { ApolloProvider } from '@apollo/client'
import { apolloClient } from '@/lib/apollo-client'
import { Toaster } from "@/components/ui/sonner" import { Toaster } from "@/components/ui/sonner"
import "./globals.css" import "./globals.css"
import { Providers } from './providers'
export default function RootLayout({ export default function RootLayout({
children, children,
@ -13,9 +10,9 @@ export default function RootLayout({
return ( return (
<html lang="ru"> <html lang="ru">
<body> <body>
<ApolloProvider client={apolloClient}> <Providers>
{children} {children}
</ApolloProvider> </Providers>
<Toaster /> <Toaster />
</body> </body>
</html> </html>

16
src/app/providers.tsx Normal file
View File

@ -0,0 +1,16 @@
"use client"
import { ApolloProvider } from '@apollo/client'
import { apolloClient } from '@/lib/apollo-client'
export function Providers({
children,
}: {
children: React.ReactNode
}) {
return (
<ApolloProvider client={apolloClient}>
{children}
</ApolloProvider>
)
}