通过其名称调用Docker容器

时间:2019-03-06 17:52:17

标签: node.js docker

我想知道是否可以使用我的docker容器名称代替IP作为主机。

让我解释一下,这是我的docker-compose文件:

version : "3"
  services:
    pandacola-logger:
        build: ./
        networks:
          - logger_db
        volumes: 
          - "./:/app"
        ports:
          - 8060:8060
          - 10060:10060
        command: npm run dev

      logger-mysql:
        image: mysql
        networks:
          - logger_db
        command: --default-authentication-plugin=mysql_native_password
        environment:
          MYSQL_ROOT_PASSWORD: Carotte1988-
          MYSQL_DATABASE: logger
          MYSQL_USER: logger-user
          MYSQL_PASSWORD: PandaCola-
        ports:
          - 3306:3306

      adminer:
        networks:
          - logger_db
        image: adminer
        restart: always
        ports:
          - 8090:8090

    networks:
      logger_db: {}
  

对不起,意图有点混乱

我想在我的Web服务(pandacola-logger)的.env文件中设置logger-mysql的名称,而不是其IP地址

这是.env文件

HOST=0.0.0.0
PORT=8060
NODE_ENV=development
APP_NAME=AdonisJs
APP_URL=http://${HOST}:${PORT}
CACHE_VIEWS=false
APP_KEY=Qs1GxZrmQf18YZ9V42FWUUnnxLfPetca
DB_CONNECTION=mysql
DB_HOST=0.0.0.0  <---- here's where I want to use my container's name
DB_PORT=3306
DB_USER=logger-user
DB_PASSWORD=PandaCola-
DB_DATABASE=logger
HASH_DRIVER=bcrypt

如果您能先告诉我,如果有可能,然后再告诉我如何做,那就太好了。

1 个答案:

答案 0 :(得分:1)

默认情况下,Compose为您的应用设置单个网络。服务的每个容器都加入默认网络,并且都可以被该网络上的其他容器访问,并且可以在与容器名称相同的主机名下被发现。

Reference

例如:

version: '2.2'
services:
  redis:
    image: redis
    container_name: cache
    expose:
      - 6379
  app:
    build: ./
    volumes:
      - ./:/var/www/app
    ports:
      - 7731:80
    environment:
      - REDIS_URL=redis://cache
      - NODE_ENV=development
      - PORT=80
    command:
      sh -c 'npm i && node server.js'

networks:
  default:
    external:
      name: "tools"