我不确定这是否可行。
我有一个容器,可以设置一个php / apache环境来运行一个小应用程序。该应用程序建立了外部数据库连接,但我打算在其他容器中使用该连接。
我的想法是为实用程序创建另一个容器,例如建立数据库连接,这样我就不必管理每个容器中的连接信息。
使用docker-compose我同时运行两个容器,但app容器无法读取我的实用程序容器中带有数据库连接信息的文件。
App Dockerfile
FROM php:7.2-apache
RUN apt-get update
RUN docker-php-ext-install mysqli pdo pdo_mysql
RUN a2enmod rewrite
COPY /src /var/www/html
COPY /conf /usr/local/lib/php/app-lib/conf
实用工具Dockerfile
FROM php:latest
RUN apt-get update
RUN docker-php-ext-install mysqli pdo pdo_mysql
COPY /src /usr/local/lib/php/app-lib/utilities
docker-compose.yml
version: "3"
services:
inventory:
image: repo/inventory:latest
volumes:
- ./src:/var/www/html
deploy:
replicas: 5
resources:
limits:
cpus: "0.1"
memory: 50M
restart_policy:
condition: on-failure
expose:
- "80"
ports:
- "80:80"
networks:
- appnet
depends_on:
- utilities
utilities:
image: repo/utilities:latest
volumes:
- ./src:/usr/local/lib/php/app-lib/utilities
deploy:
replicas: 5
resources:
limits:
cpus: "0.5"
memory: 256M
restart_policy:
condition: on-failure
ports:
- "8081:80"
networks:
- appnet
networks:
appnet:
PHP文件
die((file_exists('/usr/local/lib/php/app-lib/utilities/db.php') ? 'exists' : 'not found'));
当然,当我点击http://127.0.0.1
时,它输出“未找到”,因此它不会从实用程序容器中加载文件。我不确定我做错了什么或者这是不可能的。
我正在将单片API转换为服务,并且我创建了一些用于在端点之间共享函数的类,我希望我可以使用容器执行类似操作,因此我不会在多个容器中管理相同的代码