我有四个容器。用于php服务器的容器,用于mysql服务器的容器,用于ngnix的容器和用于加密的容器。
问题是php服务器无法连接到mysql服务器。
在服务器中,我可以连接到127.0.0.1上的数据库
在容器中,我无法连接到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服务器的访问权限,并进行加密。
答案 0 :(得分:0)
由于您不提供有关连接方式的任何信息,因此我将继续假设您只是不使用数据库容器名;并且应该使用saas-smd-mysql
而不是localhost
。