我正在尝试使用docker(完全是第一次使用)为我的laravel项目构建开发环境。
我已经阅读了文档,至少在我看来,docker-compose.yml
文件是最好的选择。
我正在尝试创建一个LEMP env,这是我的撰写文件:
version: "3.1"
services:
memcached:
image: memcached:alpine
container_name: 01dev-memcached
mysql:
image: mysql:8.0
container_name: 01dev-mysql
working_dir: /application
volumes:
- ./:/application
environment:
- MYSQL_ROOT_PASSWORD=laravel
- MYSQL_DATABASE=laravel
- MYSQL_USER=laravel
- MYSQL_PASSWORD=laravel
ports:
- "8082:3306"
webserver:
image: nginx:alpine
container_name: 01dev-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: 01dev-php-fpm
working_dir: /application
volumes:
- ./:/application
- ./phpdocker/php-fpm/php-ini-overrides.ini:/etc/php/7.3/fpm/conf.d/99-overrides.ini
我的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;
}
}
因为是Laravel应用程序,所以我需要将public
文件夹设置为root,所以在我的nginx.conf中,我已经将其设置。
如果我仅用一个public
用一个index.php
创建一个echo "hello";
文件夹,我就可以连接并看到http://localhost:8080上的字符串。
现在,我需要使用composer来安装和管理我的项目,因此我找到了composer
映像,并将其添加到services
中的docker-compose.yml
下:
composer:
restart: 'no'
container_name: 01dev-composer
image: "composer"
command: install
volumes:
- ./:/application
据我对volumes
的了解,我将主机绑定到了容器路径,所以它应该指向public
文件夹之外,对吗?
如果我运行docker-compose up
,我会看到作曲家容器exit with code 1
:
01dev-composer | Composer could not find a composer.json file in /app
01dev-composer | To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section
01dev-composer exited with code 1
我无法连接到它:
docker-compose exec composer install
ERROR: No container found for composer_1
如何在项目中使用作曲家?有更好的方法吗?
答案 0 :(得分:0)
请参见composer
Dockerfile:
WORKDIR / app
此映像的工作目录为/app
,也从guide(所有示例安装代码目录)到容器中的/app
文件夹。
此外,该错误还告诉您:
Composer在/ app中找不到composer.json文件
因此,您需要做的是将代码目录安装到/app
并确保首先启动此服务,然后它将在您的源代码目录中生成vendor
文件夹:
volumes:
- ./:/app