gpt4 book ai didi

php - 从 Docker 容器使用本地主机连接到 MariaDB

转载 作者:可可西里 更新时间:2023-11-01 08:08:45 30 4
gpt4 key购买 nike

首先我确实阅读了这些链接

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

你需要知道的:

  • 是的,我需要本地主机。我正在开发一个可以交互的应用程序直接用数据库。它创建/删除用户权限和允许某些用户以有限的权限从远程访问使用权。初始化后,该应用程序将放弃对 root 和 forge 用户的默认远程访问权限,并授予他们对本地主机的完全权限。
  • 我正在使用由 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 但它使网络服务器停止并返回 Exit 1

最佳答案

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

看看这里 Connection between docker containers via UNIX sockets

关于php - 从 Docker 容器使用本地主机连接到 MariaDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55142399/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com