当前位置: 首页 > 知识库问答 >
问题:

如何将主机IP地址传递给Docker组合文件?

胡博艺
2023-03-14
    version: "3.7"

    services:
      db:
        build: 
          context: ./database
        command: --default-authentication-plugin=mysql_native_password  --sql_mode=""
        restart: always
        cap_add:
          - SYS_NICE  # CAP_SYS_NICE
        volumes:
          - db_data:/var/lib/mysql
        ports:
          - ${MYSQL_PORT}:${MYSQL_PORT}
        environment:
          MYSQL_DATABASE: ${MYSQL_DATABASE}
          MYSQL_PASSWORD: ${MYSQL_PASSWORD}
          MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
          MYSQL_TCP_PORT: ${MYSQL_PORT}
        env_file: ./.env

      back:
        depends_on:
          - db
        build: 
          context: ./backend
          target: development
        volumes: 
          - ./backend:/app
          - /app/node_modules
        restart: "no"
        ports:
          - ${BACKEND_PORT}:${BACKEND_PORT}
        env_file: ./.env

      front:
        depends_on:
          - back
          - db
        build:
          context: ./frontend
          target: development
        stdin_open: true
        volumes:
          - ./frontend:/app
          - /app/node_modules
        restart: "no"
        ports:
          - ${FRONTEND_PORT}:${FRONTEND_PORT}
        env_file: ./.env

    volumes:
      db_data: {}

文件2

const dev = {
    ...env,
    apiUrl: "http://localhost:3000/api",
};

非常感谢你的帮助!最佳

共有1个答案

宓毅庵
2023-03-14

环境变量是一种简单的方法,可以将像这样的少量配置传递进来。

对于这种特殊情况,我可能会配置一个URL,而不是主机的IP地址。您可能非常合理地希望在负载均衡器后面部署此应用程序;负载均衡器可能会终止TLS,因此您可以通告https:URL;您的本地IP地址可能无法从客户端直接访问;如果您有一个IP地址,您更喜欢通告一个DNS名称而不是IP地址。

在节点代码中,您可以在process.env中找到环境变量:

const dev = {
  ...env,
  apiUrl: process.env.API_URL || 'http://localhost:3000/api'
};
services:
  front:
    environment:
      API_URL: http://10.20.30.40/api
      # API_URL: https://example.com/myapp/api
 类似资料:
  • 问题内容: 不熟悉Unix网络,添加虚拟接口等,现在尝试学习。我们正在尝试对我们的应用程序进行docker化。 我的要求是:将ip分配给可从外部应用程序/浏览器访问的docker容器。 容器ip应该基本上可以从同一网络中的其他计算机ping通。我不想使用端口转发。 我想访问docker容器,就像我们使用ip地址访问VM。没有端口映射,-p标志。如果我在容器中运行任何服务器,例如Apache或Tom

  • 问题内容: 创建新容器后,是否可以运行命令以从主机获取容器的IP地址? 基本上,一旦Docker创建了容器,我想滚动自己的代码部署和容器配置脚本。 问题答案: 该的选项就派上用场了。 现代Docker客户端语法为: 旧的Docker客户端语法为: 这些命令将返回Docker容器的IP地址。 如注释中所述:如果在Windows上,请在花括号周围使用双引号而不是单引号。

  • 正如标题所说。我需要能够检索docker主机的IP地址,以及从主机到容器的端口映射,并在容器内部完成此操作。

  • 我看了很多stackoverflow的答案,但没有找到解决我的问题的方法,所以如果它似乎与其他问题类似,我表示歉意。 我有一个docker compose文件,它需要连接到位于端口5555上的本地数据库。我需要能够在docker compose文件中设置一个env var,它将转换为我的主机IP地址。 类似于 我怎么能这么做?

  • 问题内容: 如标题所示。我需要能够检索Docker主机的IP地址和从主机到容器的端口映射,并在容器内部进行操作。 问题答案: 正如@MichaelNeale注意到的那样,没有必要使用此方法(除非仅在构建时需要此IP),因为此IP将在构建时进行硬编码。

  • 问题内容: 在我的java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出了主机名,那么我们需要显示主机的IP。 例如,如果用户输入IP地址,则应显示应用程序,反之亦然。 有可用的工具来执行此操作吗? 问题答案: 如果您使用Java进行编码,请尝试使用