使用Docker来构建Laravel开发环境(LEMP环境)

这次我们将使用Docker和docker-compose在本地搭建以下环境(LEMP环境)。

Laravel 8.0:Laravel 8.0
PHP 8.0:PHP 8.0
Nginx:Nginx
MySQL 5.7:MySQL 5.7

需要满足以下前提条件:
– 使用Macbook Air M2 14.0版本
– 使用iTerm2
– 本地已安装Docker
– 本地已安装Docker Compose


这次使用iTerm2进行操作。

创建项目目录。

我的名字可以随便取,但是我创建了一个名为”laravel_docker”的新目录。

mkdir laravel_docker
cd laravel_docker

创建用于环境搭建的目录。

スクリーンショット 2023-09-30 23.20.50.png

docker-compose.yml 文件

在Laravel Docker中创建docker-compose.yml文件。

touch docker-compose.yml

打开docker-compose.yml文件进行编辑。

vim docker-compose.yml
version: '3'
services:
  app:
    container_name: app
    build: ./docker/php
    volumes:
      - .:/var/www
  nginx:
    image: nginx
    container_name: nginx
    ports:
      - 8000:80
    volumes:
      - .:/var/www
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /var/www
    depends_on:
      - app
  db:
    image: mysql:5.7
    container_name: db
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: database
      MYSQL_USER: db-user
      MYSQL_PASSWORD: db-pass
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./docker/db/data:/var/lib/mysql
      - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./docker/db/sql:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306

请对php进行设置,操作php.ini文件。

我会在laravel_docker中创建一个名为docker的目录。

mkdir docker
cd docker

在docker目录中创建一个名为php的文件夹
在php文件夹中创建一个名为php.ini的文件

mkdir php && cd php
touch php.ini

将php.ini文件的配置进行修改。

php.ini是PHP的配置文件。

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

将PHP的设置配置到Dockerfile中。

在php目录中创建Dockerfile文件。

touch Dockerfile
FROM php:8.0-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
  && apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
  && docker-php-ext-install zip pdo_mysql

#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer

ENV PATH $PATH:/composer/vendor/bin


WORKDIR /var/www

RUN composer global require "laravel/installer"

“将nginx > default.conf的配置改为默认设置。”

dockerディレクトリ内にnginxディレクトリを作成
nginxディレクトリ内にdefault.confファイル作成

mkdir nginx && cd nginx
touch default.conf
server {
  listen 80;
  root /var/www/laravel-project/public;
  index index.php;
  location / {
    root /var/www/laravel-project/public;
    index index.php;
    try_files $uri $uri/ /index.php$query_string;
  }
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app: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-compose up -d

确认容器是否已启动。

docker-compose ps
スクリーンショット 2023-09-30 23.08.50.png

请提供更多的原文内容。

 

广告
将在 10 秒后关闭
bannerAds