【问题标题】:Put parameters in docker container of Angular app将参数放入 Angular 应用程序的 docker 容器中
【发布时间】:2018-09-23 10:09:01
【问题描述】:

我有一个 Angular 应用程序,我需要将其放入 docker 映像中。我的 Dockerfile 的第一个版本如下:

### STAGE 1: Build ###

# We label our stage as 'builder'
FROM node:8-alpine as builder

COPY package.json package-lock.json ./

RUN npm set progress=false && npm config set depth 0 && npm cache clean --force

## Storing node modules on a separate layer will prevent unnecessary npm installs at each build
RUN npm i && mkdir /ng-app && cp -R ./node_modules ./ng-app

WORKDIR /ng-app

COPY . .

## Build the angular app in production mode and store the artifacts in dist folder
RUN $(npm bin)/ng build --prod --build-optimizer


### STAGE 2: Setup ###

FROM nginx:1.13.3-alpine

## Copy our default nginx config
COPY nginx/default.conf /etc/nginx/conf.d/

## Remove default nginx website
RUN rm -rf /usr/share/nginx/html/*

## From 'builder' stage copy over the artifacts in dist folder to default nginx public folder
COPY --from=builder /ng-app/dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]

现在,由于项目有环境文件,我需要找到一种方法来传递这些参数,例如 docker 容器的“环境”变量,例如 docker run -e VARIABLE=VALUE myImage

所以,我推断我需要在编译之前在环境文件中设置这些值,但我不知道如何实现它。 我想在这件事上得到一些帮助,在此先感谢您

【问题讨论】:

    标签: angular docker environment-variables dockerhub


    【解决方案1】:

    我会使用docker-compose。您可以在 docker-compose.yml 文件中定义环境变量。如果使用env_file 配置选项,您还可以在单​​独的文件中声明多个变量。

    来自文档:

    在容器中设置环境变量

    你可以设置环境 服务容器中的变量与“环境”键,只是 就像 docker run -e VARIABLE=VALUE ...:

    网络:
    环境:
    - 调试=1

    将环境变量传递给容器

    您可以将环境变量从 shell 直接传递到服务的容器 使用“环境”键,不给它们一个值,就像使用 docker run -e VARIABLE ...:

    网络:
    环境:
    - 调试

    这是一个在容器内将环境变量 DEBUG 设置为 development 的小示例:

    Dockerfile:

    FROM ubuntu
    
    version: "3"
      services:
        example:
          build:
            context: .
            dockerfile: Dockerfile
          environment:
            - DEBUG="development"
    

    设置:

    # build 
    ./docker-compose build
    # start
    ./docker-compose up
    # display all declared variables in container
    ./docker-compose exec example env
    

    由于您想使用来自 dockerhub 的图像,您可以简单地使用 docker-compose 拉取图像:

    # docker-compose.yml
    version: "3"
    services:
      example:
        image: ubuntu
      environment:
        - DEBUG="development"
      entrypoint:
        - <YOURENTRYPOINT>
    

    拉取指定的服务镜像:

    ./docker-compose pull example
    

    运行容器:

    ./docker-compose up example
    

    参考

    【讨论】:

    • 不错的方法!但是我的客户需要并希望在 docker-hub 中构建图像,因此,我必须生成图像并从 docker run 命令中捕获 te 值
    • @SrednyMCasanova - 但是您不应该能够使用docker-compose.yml 文件并从 dockerhub 中提取所需的 Dockerfile 吗?
    • 我没关注你,不懂
    • @SrednyMCasanova - 您应该能够指定要在 docker-compose.yml 文件中使用的图像。我更新了我的答案。不太确定我是否了解您在这里要做什么=)
    • 也许这个链接会对你有所帮助:stackoverflow.com/questions/48595829/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2020-02-10
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 2017-12-08
    • 2017-01-28
    相关资源
    最近更新 更多