Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Docker中链接PostgreSQL容器和PgAdmin?_Docker - Fatal编程技术网

如何在Docker中链接PostgreSQL容器和PgAdmin?

如何在Docker中链接PostgreSQL容器和PgAdmin?,docker,Docker,我有一个docker compose文件,在我的Laravel项目中提供postgres和pgadmin服务。问题是,当我执行数据库迁移时,它会成功,但当我转到pgadmin时,我看不到在那里创建的表。我想,和往常一样,我在写docker compose时犯了一个错误,我就是找不到我遗漏的东西 version: '3' services: #PHP Service app: build: context: . dockerfile: Dockerfile

我有一个docker compose文件,在我的Laravel项目中提供postgres和pgadmin服务。问题是,当我执行数据库迁移时,它会成功,但当我转到pgadmin时,我看不到在那里创建的表。我想,和往常一样,我在写docker compose时犯了一个错误,我就是找不到我遗漏的东西

version: '3'
services:
#PHP Service
app:
    build:
        context: .
        dockerfile: Dockerfile
    image: digitalocean.com/php
    container_name: app
    restart: unless-stopped
    tty: true
    environment:
        SERVICE_NAME: app
        SERVICE_TAGS: dev
    working_dir: /var/www
    volumes:
        - ./:/var/www
        - ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
    networks:
        - postgres
#Nginx Service
webserver:
    image: nginx:alpine
    container_name: webserver
    restart: unless-stopped
    tty: true
    ports:
        - "80:80"
        - "443:443"
    volumes:
        - ./:/var/www
        - ./docker/nginx/conf.d/:/etc/nginx/conf.d/
    networks:
        - postgres
#Redis
redis:
    image: 'redis:alpine'
    ports:
        - "6379:6379"
#PostgreSQL        
postgres:
    container_name: postgres_container
    image: postgres
    environment:
        POSTGRES_DB: postgres
        POSTGRES_USER: postgres
        POSTGRES_PASSWORD: secret
        PGDATA: /data/postgres
    volumes:
        - postgres:/data/postgres
    ports:
        - "5432:5432"
    networks:
        - postgres
    restart: unless-stopped

pgadmin:
    container_name: pgadmin_container
    image: dpage/pgadmin4
    environment:
        PGADMIN_DEFAULT_EMAIL: ${PGADMIN_DEFAULT_EMAIL:-pgadmin4@pgadmin.org}
        PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_DEFAULT_PASSWORD:-admin}
    volumes:
        - pgadmin:/root/.pgadmin
    ports:
        - "${PGADMIN_PORT:-5050}:80"
    networks:
        - postgres
    restart: unless-stopped        
#RabbitMQ
rabbit:
    image: "rabbitmq:3-management"
    hostname: "rabbit"
    environment:
        RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG"
        RABBITMQ_DEFAULT_USER: "rabbitmq"
        RABBITMQ_DEFAULT_PASS: "rabbitmq"
        RABBITMQ_DEFAULT_VHOST: "/"
    ports:
        - "15672:15672"
        - "5672:5672"
    labels:
        NAME: "rabbitmq"  
#ElasticSearch
elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.4.3
    ports:
        - "9200:9200"
        - "9300:9300"
    networks:
        - postgres                      
#Docker网络 网络: 博士后: 司机:驾驶台 卷数: 博士后:
pgadmin:

在pgadmin中,添加新服务器时,需要将“host.docker.internal”(在Windows上)定义为主机()。

因为它们都位于同一个docker网络上,所以使用其他服务的名称作为主机名应该有效,如中所述。我不会为一个普通的容器间调用回主机。