我试图在OSX上使用Docker设置一个docker容器 - Ubuntu - Nginx - MariaDB来运行一个Laravel应用程序
我的泊坞窗设置为:
version: "2"
services:
nginx:
build:
context: ./nginx
ports:
- "8080:80"
volumes:
- ./app:/var/app
fpm:
build:
context: ./fpm
volumes:
- ./app:/var/app
expose:
- "9000"
environment:
- "DB_HOST=db"
- "DB_DATABASE=laravel_db"
db:
image: mariadb
ports:
- "33061:3306"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=laravel_db
volumes:
- ./database:/var/lib/mysql
2个泊坞文件:
FROM nginx
ADD ./default.conf /etc/nginx/conf.d/
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
CMD service nginx start
FROM ubuntu:latest
RUN apt-get update && apt-get install -y software-properties-common language-pack-en-base \
&& LC_ALL=en_US.UTF-8 add-apt-repository -y ppa:ondrej/php \
&& apt-get update \
&& apt-get install -y php7.0 php7.0-fpm php7.0-mysql mcrypt php7.0-gd curl \
php7.0-curl php-redis php7.0-mbstring sendmail supervisor \
&& mkdir /run/php \
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
RUN sed -i -e 's/listen = \/run\/php\/php7.0-fpm.sock/listen = 0.0.0.0:9000/g' /etc/php/7.0/fpm/pool.d/www.conf \
&& sed -i -e 's/;daemonize = yes/daemonize = no/g' /etc/php/7.0/fpm/php-fpm.conf
WORKDIR /var/app
EXPOSE 9000
CMD ["/usr/bin/supervisord"]
到目前为止一切顺利。我可以 localhost:8080 访问Laravel App主页,并使用Sequel Pro访问MySQL数据库。
但是当访问需要数据库查询的Laravel路由时,它会返回“Connection refused”
然后我创建一个原始PHP文件来进行数据库连接测试:
$link = mysqli_connect('127.0.0.1', 'root', 'root', 'laravel_db', 33061);
if(!$link) {
die('failed to connect to the server: ' . mysqli_connect_error());
}
我也得到连接拒绝错误。
我尝试使用127.0.0.1和localhost,但没有希望。
试图google它,但大多数答案是关于端口未发布...
由于
答案 0 :(得分:1)
使用docker-compose时,需要使用link
指令连接各种docker容器。即,如果你想让docker容器A与docker容器B通信,它们需要被“链接”