Svelte Docker 环境变量

时间:2021-03-28 02:09:55

标签: docker docker-compose svelte

我正在尝试在我的 Svelte 应用程序中为 API 端点使用 docker compose 环境变量,但它未定义。

这确实适用于这样的 .env answer 但我想通过 docker-compose 环境传递它

Docker 撰写文件

services:
  frontend:
    build: ./frontend/ # For development
    container_name: frontend
    restart: always
    environment: 
      - API_URL: https://0.0.0.0/8000
    ports:
      - "5000:5000"
    volumes:
      - ~/uploader:/app/static/uploads
    depends_on:
      - backend

rollup.config

plugins: [
        replace({
            preventAssignment: true,
            __myapp:JSON.stringify({
                    env: {
                        isProd: production,
                        // ...config().parsed
                        API_URL: process.env.API_URL
                    }
                })
                // "API_URL_VAR", JSON.stringify(process.env.API_URL_VAR)
        }),

苗条

<script lang="ts">
  console.log(__myapp.env.API_URL);
</script>

<h1 class="text-red-800 text-3xl font-bold p-3">Hello World!</h1>

1 个答案:

答案 0 :(得分:0)

问题是环境变量是在你的图像/你的应用(API_URL: process.env.API_URL)的构建过程中被评估和设置的,所以从 docker compose 传递环境变量将没有任何效果。

作为一种解决方法,我使用了 this,它允许您在构建期间设置环境变量。