【问题标题】:Network problem beetwen two containers in DockerDocker中两个容器之间的网络问题
【发布时间】:2019-10-18 14:08:45
【问题描述】:

我有四个容器。一个php服务器的容器,一个mysql服务器的容器,一个ngnix的容器和一个let's encrypt的容器。

问题是php服务器连接不上mysql服务器。

在服务器中,我可以连接到127.0.0.1上的数据库

Schema update in the server

在容器中,我无法连接到 127.0.0.1 上的数据库

Schema update in php container

我认为这是容器之间的网络问题。

这是 docker-compose :

version: "3.3"
services:
  saas-smd-php:
    build: ./html
    container_name: saas-smd-php
    ports:
      - "80"
    network_mode: bridge
    env_file:
      - .env
    environment:
      - VIRTUAL_PORT=80

  nginx-proxy:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    network_mode: bridge

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-proxy-le
    environment:
      - NGINX_PROXY_CONTAINER=nginx-proxy
    env_file:
      - .env
    volumes:
      - conf:/etc/nginx/conf.d
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - certs:/etc/nginx/certs:rw
      - /var/run/docker.sock:/var/run/docker.sock:ro
    network_mode: bridge

  db:
    container_name: saas-smd-mysql
    image: mysql
    ports:
    - "3306:3306"
    env_file:
    - .env
    volumes:
      - data:/var/lib/mysql
    network_mode: bridge
volumes:
  data:
  conf:
  vhost:
  html:
  dhparam:
  certs:

还有php服务器的Dockerfile:

ARG PHP_VERSION=7.3

FROM php:${PHP_VERSION}-fpm-alpine

RUN apk update
RUN apk upgrade

RUN set -ex \
    && apk --no-cache add postgresql-libs postgresql-dev \
    && docker-php-ext-install pgsql pdo_pgsql \
    && apk del postgresql-dev

WORKDIR /var/www/html
COPY saas-api .

EXPOSE 80
EXPOSE 22

CMD ["php", "-S", "0.0.0.0:80", "-t", "./", "./web/app_dev.php"]

我希望php服务器可以与mysql服务器通信,而不用ngnix破坏php服务器从域名的访问,让我们加密。

【问题讨论】:

  • 尝试使用 docker 服务名称而不是 127.0.0.1 进行连接

标签: docker docker-compose


【解决方案1】:

由于您没有提供有关如何连接的任何信息,我将继续假设您只是没有使用数据库容器名称;你应该使用saas-smd-mysql 而不是localhost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多