Lumenとdockerを使用してサービスを構築することにより、マイクロサービスアーキテクチャを学習しようとしています。このようなフォルダ構造があります
./
./base_service
./base_service/base.docker
./user_service
./user_service/user.docker
./auth_service
./auth_service/auth.docker
./gateway.docker
./vhost.conf
./docker-compose.yml
各サービスディレクトリはLumenアプリですこれは私のdocker-compose.ymlファイルです
version: '2'
services:
gateway:
build:
context: ./
dockerfile: web.docker
volumes:
- ./:/var/www
ports:
- "8080:80"
links:
- base_service
- auth_service
- user_service
base_service:
build:
context: ./base_service
dockerfile: base.docker
volumes:
- ./:/var/www
links:
- broker
auth_service:
build:
context: ./auth_service
dockerfile: auth.docker
volumes:
- ./:/var/www
links:
- broker
user_service:
build:
context: ./user_service
dockerfile: user.docker
volumes:
- ./:/var/www
links:
- broker
broker:
image: redis:3.0
ports:
- "63791:6379"
Gateway.docker
FROM nginx
ADD ./vhost.conf /etc/nginx/conf.d/default.conf
WORKDIR /var/www
nginx用のvhost.conf
server {
listen 80;
index index.php index.html;
root /var/www/base_service/public;
location / {
try_files $uri /index.php?$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass base_service:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
サービスのDockerファイルはPHP7-fpmイメージをフェッチするだけです
FROM php:7-fpm
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client \
&& docker-php-ext-install mcrypt pdo_mysql
WORKDIR /var/www
docker-compose up -d
コマンドを実行してhttp://localhost:8080
に移動すると、「ファイルが見つかりません」というページが表示されます。初めてマイクロサービスアーキテクチャを試すので、セットアップ全体の構成について少し深く理解していないので、ヘルプやガイダンスは大歓迎です。
私が述べたものを真似ようとしたときにも同様の問題がありました: here 。最後に、これらのファイルをすべてPROJECT ROOTに配置する必要があった(その中にプロジェクトを作成しないでください!)ことが問題であることがわかりました。これらの変更を行った後、プロジェクトに問題なく取り組むことができました。これもお役に立てば幸いです。