首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法执行命令在docker容器中设置环境变量

无法执行命令在docker容器中设置环境变量
EN

Stack Overflow用户
提问于 2021-03-06 10:01:00
回答 2查看 645关注 0票数 1

我看到了在docker-compose文件中执行多个命令的以下链接:

它告诉我们如何在文件(也在docker容器中)中执行多个命令。

为了正确运行sburn/apache-地图集映像,我必须设置/opt/apache-atlas-2.1.0/conf/atlas-env.sh目录中存在的一些环境变量。

我尝试了以下docker-compose.yml文件:

代码语言:javascript
复制
version: "3.3"

services:
  atlas:
    image: sburn/apache-atlas
    container_name: atlas
    ports:
      - "21000:21000"
    volumes:
      - "./bash_script:/app"
    command: bash -c "
      source ./opt/apache-atlas-2.1.0/conf/atlas-env.sh
      && chmod 777 /app/import-hive.sh
      && /opt/apache-atlas-2.1.0/bin/atlas_start.py
      "

不幸的是,第一个命令(我的意思是source ./opt/apache-atlas-2.1.0/conf/atlas-env.sh)不能工作。它没有任何错误,但是没有设置诸如JAVA_HOME这样的环境变量。

,您如何检查变量没有设置?

  1. 在终端运行Docker exec -it atlas bash
  2. 在终端运行set。它显示了所有的环境变量。
  3. 检查是否设置了环境变量。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-06 13:59:57

你的问题涉及很多东西,如果你能缩小范围,人们就能帮助得更好。下面是我对其进行调试的建议:

代码语言:javascript
复制
bash -exc "
    echo home1=$JAVA_HOME
    source ./opt/apache-atlas-2.1.0/conf/atlas-env.sh
    echo home2=$JAVA_HOME
    chmod 777 /app/import-hive.sh
    echo home3=$JAVA_HOME
    /opt/apache-atlas-2.1.0/bin/atlas_start.py
"

如果从未设置JAVA_HOME,则.sh文件有问题,要么修复该文件,要么手动设置

代码语言:javascript
复制
export JAVA_ENV=/aaa/bbb/ccc

或者在撰写yaml文件中定义它。

另外,您检查env的方式是错误的,运行Docker exec -it atlas bash不会在与bash -c "source ./opt/apache-a..."相同的bash中运行

票数 2
EN

Stack Overflow用户

发布于 2021-03-06 10:47:02

若要设置环境变量,必须设置以下内容:

代码语言:javascript
复制
environment:
  - JAVA_HOME=/usr/bin/java
  - OTHER_VARIABLE=example

也可以使用以下方法在Dockerfile上设置变量:

代码语言:javascript
复制
ENV JAVA_HOME="Your variable"
ENV OTHER_VARIABLE="example"

如果要在容器启动时执行./opt/apache-atlas-2.1.0/conf/atlas-env.sh脚本,因为该脚本具有所需的所有环境,则可以将其包含在entrypoint或Dockerfile中,并与CMD exec一起使用。

示例:

代码语言:javascript
复制
FROM: source_image
RUN source ./opt/apache-atlas-2.1.0/conf/atlas-env.sh
ENTRYPOINT []

要从您的停靠库执行命令,请尝试如下:

代码语言:javascript
复制
command: sh -c "source ./opt/apache-atlas-2.1.0/conf/atlas-env.sh"

问候

资料来源:码头-撰写,运行脚本后容器已启动?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66504462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档