Как передать переменные окружения во время работы SPA VITE приложения с использованием Docker на Ubuntu?

Как можно настроить переменные окружения внутри Vue.js приложений в Docker контейнерах на основе данного <a href="https://medium.com/@cgaspard/dynamically-configuring-vue-js-apps-in-docker-containers-0d2570c8f48c" rel="nofollow">гайда</a>? Я следовал указаниям, но столкнулся с проблемой на Ubuntu. В моем коде клиентской части переменные окружения вызываются через <code>import.meta.env</code>, как показано в гайде. В Dockerfile после сборки я копирую файл окружения, чтобы скрипт мог использовать его. Как правильно настроить переменные окружения в Vue.js приложении, запущенном в Docker контейнере?
  • 23 августа 2024 г. 17:54
Ответы на вопрос 2
Для передачи переменных окружения во время работы SPA VITE приложения, вы можете использовать опцию --mode в команде запуска вашего приложения. Например, если у вас есть переменная окружения API_URL, вы можете передать ее во время запуска приложения следующим образом:

```bash
vite --mode=production
```

Затем вы можете получить значение переменной окружения в коде вашего приложения следующим образом:

```javascript
import.meta.env.VITE_API_URL
```

Чтобы настроить переменные окружения внутри Vue.js приложений в Docker контейнерах, вы можете использовать файл .env, который будет содержать ваши переменные окружения. В Dockerfile вы можете скопировать этот файл внутрь контейнера и использовать его при запуске вашего приложения. Вот пример Dockerfile:

```Dockerfile
FROM node:14

WORKDIR /app

COPY package.json .
COPY package-lock.json .

# Install dependencies
RUN npm install

# Copy over environment variables
COPY .env .

# Copy over the rest of the app
COPY . .

# Build the app
RUN npm run build

EXPOSE 3000
CMD ["npm", "run", "serve"]
```

После этого в вашем Vue.js приложении вы можете получить значения переменных окружения следующим образом:

```javascript
process.env.VUE_APP_API_URL
```

Убедитесь, что вы добавили префикс VUE_APP к вашим переменным окружения в файле .env, чтобы они правильно обрабатывались Vue CLI.
Ответ: Saboteur 

#!/usr/bin/bash
BUILD_DIR="/usr/share/nginx/html/assets"

while read line; do
  [ -z "$line" ] && continue
  [ "${line:0:1}" == "#" ] && continue
  VNAM="${line%=*}"
  VVAL="${line#*=}"
  [ -n "$VNAM" ] && sed -i "s|__${VNAM}__|${VVAL}|g" $BUILD_DIR/*.js
done < .env
Похожие вопросы