reactjs - Vite React აპლიკაციის გაშვებისას Dockerfile-ის გამოყენებით გარემოს ცვლადებზე წვდომა
მაქვს Vite React აპლიკაცია, რომელიც იყენებს env ცვლილებებს API-სთან კომუნიკაციისთვის:
const API_URL = import.meta.env.VITE_API_URL;
მე ვაქვეყნებ ამ აპლიკაციას Fly.io-ზე შემდეგი Dockerfile-ის გამოყენებით:
FROM node:18 as build
WORKDIR /web
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=build /web/dist /usr/share/nginx/html
This needs be referenced in fly.toml's internal_port
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
მე მაქვს VITE_API_URL კონფიგურირებული ჩემს Fly.io კონტეინერის გარემოში და შევამოწმე, რომ იგი არსებობს.
თუმცა, როდესაც მე ვდებთ აპლიკაციას, API_URL საბოლოოდ ხდება undefined. მგონი ეს უკავშირდება იმას, რომ nginx-ს არ აქვს მის წვდომას.
მე ვიყენებდი ამ სხვა Dockerfile-ს განვითარებისას:
FROM node:18
WORKDIR /web
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5173
CMD ["npm", "run", "dev"]
და ამას ჰქონდა წვდომა Fly.io-ის საიდუმლოებებზე/გარემო ვარიაბლებზე. მე ვვარაუდობ, რომ ამის მიზეზი არის ის, რომ მე ვაწარმოებ Vite-ის კოდს პირდაპირ npm run dev-ით. მაგრამ ახლა როცა ვაწარმოებ ნგინიქსის საშუალებით, მგონი, შეიძლება მჭირდეს რაღაც განსხვავებულის გაკეთება იმისთვის, რომ მივაწვდინო წვდომა იმავე გარემოების ვარიაბლებზე?
პასუხი #1
Vite-ს სჭირდება გარემოს ცვლადები დაშვების დროს.
თქვენ გაქვთ ორი არჩევანი...
დაემატეთ
.env.productionფაილი თქვენს Docker აშენებაში. მაგალითად.env.production VITE_API_URL=https://your.production.api/გაეცით ბილდის არგუმენტი თქვენს
fly deployბრძანებას და გამოიყენეთ იგი გარემოს ვარიანტის დასამდგენადfly deploy --build-arg API_URL="https://your.production.api/"Dockerfile FROM node:18 as build WORKDIR /web COPY package*.json ./ RUN npm install COPY . . ARG API_URL ENV VITE_API_URL=${API_URL} RUN npm run buildმე ვფიქრობ, რომ თქვენ ასევე შეგიძლიათ დაყენოთ build არგუმენტები თქვენს
fly.tomlფაილში[build.args]ქვეშ, თუ გნებავთ
