簡體   English   中英

從 .env 或 dockerFile/docker-compose.yml 獲取環境變量,到 config,php 以連接到 mysql 數據庫

[英]Get env variables from .env or dockerFile/docker-compose.yml, to config,php to connect to mysql database

我想在 docker 中定義一個 env 變量,而不是硬編碼 db_username 和密碼。 我是 Docker 的新手,所以有些東西我仍然需要了解更多。

我想問的另一個問題是,如果其他人想要運行我的容器,比如從 github 克隆,他們將不得不為自己設置 env 變量以連接到數據庫,對嗎? 創建一個 .env 之類的東西..

配置文件

<?php

define('DB_SERVER', getenv('DB_SERVER'));
define('DB_USERNAME', getenv('DB_USERNAME'));
define('DB_PASSWORD', getenv('DB_PASSWORD')); 
define('DB_NAME', getenv('DB_NAME'));

$link = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

if ($link === false) {
    die ("ERROR: Could not connect. " . mysqli_connect_error());
}

?>

.env

DB_SERVER=db
DB_USERNAME=dbuser
DB_PASSWORD=dbpassword
DB_NAME=company

docker-compose.yml

db:
  build: ./backend
  restart: always
  ports:
    - "3306:3306"
  volumes:
    - /var/lib/mysql
  environment:
    - MYSQL_ROOT_PASSWORD=dbpassword
php:
  build: ./frontend
  ports:
    - "80:80"
  volumes: 
    - ./frontend:/var/www/html
  environment:
    - DB_SERVER=${DB_SERVER}
    - DB_USERNAME=${DB_USERNAME}
    - DB_PASSWORD=${DB_PASSWORD}
    - DB_NAME=${DB_NAME}
  env_file: ./.env
  links:
    - db

./frontend 中的 Dockerfile

FROM php:7.2-apache

RUN docker-php-ext-install mysqli

WORKDIR /var/www/html

COPY . /var/www/html/

./backend 中的 Dockerfile

FROM mysql:5.7

COPY ./demo.sql /docker-entrypoint-initdb.d

我不知道現在的方式是否從 env 文件中獲取變量,當我使用 docker-compose up 運行並轉到 192.168.99.100 時,我的應用程序正在運行,但是我得到了

在 .yml 文件中,我認為我不需要設置環境變量,但我正在測試是否可以獲取該變量,直接放入 config.php,對於將運行我的容器的人來說,只需要運行“ docker-compose up”,而不是設置所有內容。

警告:mysqli_connect():(HY000/1045):第 8 行 /var/www/html/config.php 中的用戶 'dbuser'@'172.17.0.3'(使用密碼:YES)訪問被拒絕

我不知道如何解決這個問題。 所以基本上,這是兩個問題,為什么會出現這個錯誤,以及我是否正確地設置了環境變量。

我設法讓它工作,我真的不知道我改變了什么,但基本上我刪除了environment:php容器,並移動到db容器,使用來自 dockerhub 的 mysql 圖像環境變量。

我已經解決了這個問題你需要添加變量 PHP_FPM_CLEAR_ENV=no

 environment: - PHP_FPM_CLEAR_ENV=no

之后一切正常!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM