ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

php-从Docker容器使用localhost连接到MariaDB

2019-11-08 06:32:23  阅读:258  来源: 互联网

标签:docker docker-compose mysql php


首先,我确实阅读了那些链接

> Connect to Docker MySQL container from localhost?
> Connect to Mysql on localhost from docker container
> From inside of a Docker container, how do I connect to the localhost of the machine?

但是作为docker的初学者.它没有帮助我.

您需要了解的内容:

>是的,我需要本地主机.我正在开发一个可以交互的应用程序
直接与数据库.它创建/删除用户权限,并
允许某些用户从远程以有限的权限访问
访问.初始化后,该应用程序将放弃对root和伪造用户的默认远程访问,并授予他们对localhost的完全特权.
>我正在使用https://phpdocker.io生成的docker-compose.yml
> Ubuntu 18.10
> Docker版本18.09.3,内部版本774a1f4
> docker-compose版本1.21.0,版本未知
>我仅将docker用于开发目的.在生产中,我使用forge

./docker-compose.yml

###############################################################################
#                          Generated on phpdocker.io                          #
###############################################################################
version: "3.1"

services:

    mailhog:
      image: mailhog/mailhog:latest
      container_name: myapp-mailhog
      ports:
        - "8081:8025"

    redis:
      image: redis:alpine
      container_name: myapp-redis

    mariadb:
      image: mariadb:10.4
      container_name: myapp-mariadb
      working_dir: /application
      volumes:
        - .:/application
      environment:
        - MYSQL_ROOT_PASSWORD=root
        - MYSQL_DATABASE=myapp
        - MYSQL_USER=forge
        - MYSQL_PASSWORD=forge
      ports:
        - "8083:3306"

    webserver:
      image: nginx:alpine
      container_name: myapp-webserver
      working_dir: /application
      volumes:
          - .:/application
          - ./phpdocker/nginx/nginx.conf:/etc/nginx/conf.d/default.conf
      ports:
       - "8080:80"

    php-fpm:
      build: phpdocker/php-fpm
      container_name: myapp-php-fpm
      working_dir: /application
      volumes:
        - .:/application
        - ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini

./phpdocker/nginx/nginx.conf

server {
    listen 80 default;

    client_max_body_size 108M;

    access_log /var/log/nginx/application.access.log;


    root /application/public;
    index index.php;

    if (!-e $request_filename) {
        rewrite ^.*$/index.php last;
    }

    location ~ \.php${
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PHP_VALUE "error_log=/var/log/nginx/application_php_errors.log";
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        include fastcgi_params;
    }

}

./phpdocker/php-fpm/Dockerfile(稍作修改以添加mysql_client而不在第二个RUN命令中安装git)

FROM phpdockerio/php73-fpm:latest
WORKDIR "/application"

# Fix debconf warnings upon build
ARG DEBIAN_FRONTEND=noninteractive

# Install selected extensions and other stuff
RUN apt-get update \
    && apt-get -y --no-install-recommends install  \
        php7.3-mysql php-redis php7.3-sqlite3 php-xdebug php7.3-bcmath php7.3-bz2 php7.3-gd \
        git \
        mysql-client \
    && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*

./php-ini-overrides.ini

upload_max_filesize = 100M
post_max_size = 108M

我尝试使用network_mode:host,但它使Web服务器停止在1号出口处

解决方法:

好的,但是请记住,mysql / mariadb中的localhost意味着可以通过本地unix套接字进行访问.有在容器之间共享这些的方法.

在这里看看Connection between docker containers via UNIX sockets

标签:docker,docker-compose,mysql,php
来源: https://codeday.me/bug/20191108/2006193.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有