首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >主机名不使用坞工撰写和编辑。

主机名不使用坞工撰写和编辑。
EN

Stack Overflow用户
提问于 2021-08-04 16:00:40
回答 1查看 866关注 0票数 0

我有一个web应用程序,它使用postgres数据库、redis和artemis服务器。所有这些都在docker容器中工作,但我无法让应用程序使用容器名连接到redis或artemis (与postgres一起工作)。我的码头工:

代码语言:javascript
复制
version: '3.9'

services:
  my_web_app:
    container_name: "my_web_app"
    image: my_image
    restart: always
    environment:
     REDIS_HOST: ${REDIS_HOST}
     REDIS_PORT: ${REDIS_PORT}
     ARTEMIS_HOST: ${ARTEMIS_HOST}
     ARTEMIS_PORT: ${ARTEMIS_PORT}
     ARTEMIS_USER: ${ARTEMIS_USER}
     JDBC_URL: ${JDBC_URL}
     JDBC_USERNAME: ${JDBC_USERNAME}
     JDBC_PASSWORD: ${JDBC_PASSWORD}
        ...
    ports:
      - 8080:8080
    depends_on:
      - my_redis
      - my_artemis
      - my_postgres
    networks:
      - my_network

  my_postgres:
    container_name: "my_postgres"
    image: "postgis/postgis"
    environment:
     POSTGRES_USER: ${JDBC_USERNAME}
     POSTGRES_PASSWORD: ${JDBC_PASSWORD}
     POSTGRES_DB: ${DB_NAME}
    ports:
      - 5432:5432
    networks:
      - my_network

  my_redis:
    container_name: "my_redis"
    image: redis
    ports:
      - 6379:6379
    networks:
      - my_network


  my_artemis:
    container_name: "my_artemis"
    image: vromero/activemq-artemis:2.16.0
    environment:
       ARTEMIS_USERNAME: quarkus
       ARTEMIS_PASSWORD: quarkus
       ENABLE_JMX_EXPORTER: "true"
    ports:
      - 61616:61616
      - 8161:8161
      - 5672:5672
    networks:
      - my_network:

networks:
  my_network:

我尝试过设置网络别名、域名或主机名,但没有任何效果。我的健康检查:

代码语言:javascript
复制
{
    "status": "DOWN",
    "checks": [
        {
            "name": "Database connections health check",
            "status": "UP"
        },
        {
            "name": "Redis connection health check",
            "status": "DOWN",
            "data": {
                "reason": "client [<default>]: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379"
            }
        },
        {
            "name": "Artemis JMS health check",
            "status": "DOWN"
        }
    ]
}

我的.env:

代码语言:javascript
复制
REDIS_HOST=my_redis
REDIS_PORT=6379
ARTEMIS_HOST=my_artemis
ARTEMIS_PORT=61616
ARTEMIS_USER=quarkus
ARTEMIS_PASSWORD=quarkus
JDBC_URL=jdbc:postgresql://my_postgres:5432/my_db
JDBC_USERNAME=quarkus
JDBC_PASSWORD=quarkus
DB_NAME=my_db

我的夸克application.properties

代码语言:javascript
复制
quarkus.artemis.url=tcp://${ARTEMIS_HOST}:${ARTEMIS_PORT}
quarkus.artemis.username=${ARTEMIS_USER}
quarkus.artemis.password=${ARTEMIS_PASSWORD}
quarkus.redis.hosts=redis://${REDIS_HOST}:${REDIS_PORT}
quarkus.datasource.jdbc.url=${JDBC_URL}
quarkus.datasource.username=${JDBC_USERNAME}
quarkus.datasource.password=${JDBC_PASSWORD}

我的postgres设置(工作):

jdbc:postgresql://my_postgres:5433/db_name

我对redis和artemis的配置:

redis://my_redis:6379tcp://my_artemis:61616

唯一起作用的是设置网络和修复ips,使用ips而不是容器名称,但是我想使用容器名称。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-08-05 15:08:05

我已经解决了我的问题,但我不太明白原因,我想这是Quarkus框架的一个问题。我不得不把服务叫做"redis“和"artemis”。

代码语言:javascript
复制
version: '3.9'

services:
  my_web_app:
    container_name: "my_web_app"
    image: my_image
    restart: always
    environment:
        ...
    ports:
      - 8080:8080
    depends_on:
      - redis
      - artemis
      - my_postgres
    networks:
      - my_network

  my_postgres:
    container_name: "my_postgres"
    image: "postgis/postgis"
    environment:
        ...
    ports:
      - 5432:5432
    networks:
      - my_network

  redis:
    container_name: "my_redis"
    image: redis
    ports:
      - 6379:6379
    networks:
      - my_network


  artemis:
    container_name: "my_artemis"
    image: vromero/activemq-artemis:2.16.0
    environment:
      ARTEMIS_USERNAME: quarkus
      ARTEMIS_PASSWORD: quarkus
      ENABLE_JMX_EXPORTER: "true"
    ports:
      - 61616:61616
      - 8161:8161
      - 5672:5672
    networks:
      - my_network:

networks:
  my_network:

并在环境变量文件中配置其值:

代码语言:javascript
复制
REDIS_HOST=redis
REDIS_PORT=6379
ARTEMIS_HOST=artemis
ARTEMIS_PORT=61616

这样它才能正常工作。

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

https://stackoverflow.com/questions/68654512

复制
相关文章

相似问题

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