>  기사  >  백엔드 개발  >  Docker가 laravel 개발 환경 예시를 구축합니다.

Docker가 laravel 개발 환경 예시를 구축합니다.

小云云
小云云원래의
2018-02-09 15:15:353347검색

이 글에서는 로컬 도커 구성을 위해 주로 laradock을 사용합니다. laradock은 라라벨이 사용해야 할 환경을 통합해 놓았기 때문에 간단히 구성만 수정하면 개발 환경을 구축할 수 있어 정말 좋은 솔루션입니다. laradock进行本地的docker配置。laradock已经集成laravel需要使用的环境,只需要简单修改配置就能搭建环境提供开发,对开发及管理来说真是一味良方。

简单说明一下,在docker环境下我们需要运行laravel项目,实际会建立下几个容器(container):在电脑还是window系统的时候,经常需要基于vm服务搭建一套环境才能更好地(应该是更贴近线上环境)进行开发,而现在在docker的神秘光环底下已经能实现用最小的资源搭建本地开发环

境,同时能更好地迁移到其他地方。

  • workspace (开发环境)

  • php-fpm (php支持)

  • nginx (web服务)

  • mysql (数据库)

这些都是基于laradock再处理后的生成的容器,可参考laradock目录下相应名字的目录,里面包含Dockerfile及相关配置,感兴趣的同学可以尽情阅读学习 :)

更加深入的内容建议移步至laradock官方文档。

准备

在window系统下先安装docker

Docker가 laravel 개발 환경 예시를 구축합니다.

等多次重启后运行docker命令测试一下。

Docker가 laravel 개발 환경 예시를 구축합니다.

然后在你项目的平级目录使用git拉取https://github.com/laradock/laradock.git这个包。

# 平级目录

D:/www/
 - /laradock
 - /my-project

这样准备就绪进入下一步。

配置

这里配置的环境按常用环境进行配置

  • nginx

  • php-fpm 5.6

  • mysql 5.6

接着需要修改laradock/.env文件

/www/laradock
 - .env

进入laradock目录会发现并不存在.env文件,这里需要我们从env-example复制一份进行修改。

# /www/laradock

$ cp env-example .env

修改PHP版本

进入.env文件找到 PHP_VERSION 修改php版本为56(默认71,可选71, 70, 56)。

# /www/laradock/.env
### PHP Version

PHP_VERSION=56

修改Mysql版本及配置

进入.env文件找到 MYSQL 修改mysql版本为56(默认8,可选8, 5, 5.6, 5.5)。

其他的设置根据个人需要填写,一般情况下需要修改MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD 来确保链接。

# /www/laradock/.env
### MYSQL

MYSQL_VERSION=5.6

# MYSQL_DATABASE 可选,填写后会默认创建同名数据库
MYSQL_DATABASE=default

# MYSQL_USER 用户,填写后会创建用户,默认为 default
MYSQL_USER=packy

# MYSQL_PASSWORD 密码,填写后作为新建用户的密码,默认为 secret
MYSQL_PASSWORD=123456-

# MYSQL_PORT 访问端口,默认是3306,建议不要修改
MYSQL_PORT=3306

# MYSQL_ROOT_PASSWORD root用户密码,建议使用严谨的密码,默认为 root
MYSQL_ROOT_PASSWORD=23333-
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

关于Mysql版本选择

mysql使用的是官方镜像,所以我们可以使用hub.docker.com查询mysql官方镜像包含哪些版本。具体如何选择得看各自的需求。

Docker가 laravel 개발 환경 예시를 구축합니다.

修改nginx配置

一般情况下并不需要修改什么,使用默认的便可。关于网站的配置需要进入laradock/nginx/sites

如需要修改端口可以进入.env文件找到 NGINX进行修改。
# /www/laradock/.env
### NGINX

NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTPS_PORT=443

# NGINX_HOST_LOG_PATH log存放位置,默认位置在laradock/logs/nginx/
NGINX_HOST_LOG_PATH=./logs/nginx/

# NGINX_SITES_PATH 网站配置, 默认位置在laradock/nginx/sites/
NGINX_SITES_PATH=./nginx/sites/

NGINX_PHP_UPSTREAM_CONTAINER=php-fpm
NGINX_PHP_UPSTREAM_PORT=9000

关于Nginx的配置

nginx的配置文件存放在laradock/nginx/sites下,需要新建网站的可通过复制对应的.example并重命名为.conf进行修改。注:只用.conf文件才会在nginx下加载。

这里我复制laravel.conf.example作为例子重命名为my-project.conf

# laradock/nginx/sites/my-project.conf
server {

    listen 80;
    listen [::]:80;

    # 域名,改为你的域名
    server_name my-project.com;
    # 项目目录,均以 /var/www/ 开头。这个约定后续会说明
    root /var/www/my-project;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }

    error_log /var/log/nginx/laravel_error.log;
    access_log /var/log/nginx/laravel_access.log;
}

同时修改宿主机(就是window本地机子)的hosts

# C:\Windows\System32\drivers\etc\hosts

127.0.0.1   my-project.com

尝试运行

到这步准备工作差不多完成了。

运行以下命令进行安装及使用,因为是国外源拉取时间比较慢请耐心等待。

docker-compose up -d nginx mysql

Docker가 laravel 개발 환경 예시를 구축합니다.

完成后输入docker ps参看容器运行情况。一切正常!!!

Docker가 laravel 개발 환경 예시를 구축합니다.

尝试访问http://my-project.com看看效果。目前能正常访问php文件。

Docker가 laravel 개발 환경 예시를 구축합니다.

运行laravel

这里就不得说workspace

간단히 설명하자면, docker 환경에서 실제로 여러 컨테이너를 생성하는 laravel 프로젝트를 실행해야 합니다. 컴퓨터가 여전히 윈도우 시스템인 경우, 종종 더 나은 개발을 위해서는 VM 서비스 기반의 환경 구축이 필요했지만(온라인 환경에 더 가까워야 함), 이제 Docker의 신비한 아우라 아래 최소한의 자원으로 로컬 개발 환경 구축이 가능해졌습니다

, 동시에 다른 곳으로 이사하는 것이 더 좋을 수도 있습니다.
🎜
  • 🎜작업 공간(개발 환경)🎜
  • 🎜php-fpm(php 지원)🎜
  • 🎜nginx(웹 서비스)🎜
  • 🎜mysql(데이터베이스)🎜
🎜laradock을 기반으로 생성된 컨테이너이며 처리가 가능합니다. 관심 있는 학생들은 원하는 만큼 읽고 배울 수 있습니다. 깊이 있는 내용을 보려면 laradock 공식 문서로 이동하는 것이 좋습니다. 🎜

준비

🎜먼저 윈도우 시스템 아래에 docker를 설치하세요🎜🎜Docker가 laravel 개발 환경 예시를 구축합니다.🎜🎜여러 번 다시 시작한 후 docker 명령을 실행하여 테스트해 보세요. 🎜🎜Docker가 laravel 개발 환경 예시를 구축합니다.🎜 🎜그런 다음 git을 사용하여 프로젝트의 플랫 디렉터리에 https://github.com/laradock/laradock.git 패키지를 가져옵니다. 🎜
# /www/laradock
docker-compose exec workspace bash
🎜이제 다음 단계로 넘어갈 준비가 되었습니다. 🎜

구성

🎜여기서 구성한 환경은 공통 환경에 따라 구성되었습니다🎜
  • 🎜nginx🎜
  • 🎜php- fpm 5.6 🎜
  • 🎜mysql 5.6🎜
🎜그런 다음 laradock/.env 파일을 수정해야 합니다🎜
composer config -g repo.packagist composer https://packagist.phpcomposer.com
🎜laradock을 입력하세요 디렉토리 .env 파일이 존재하지 않는 것으로 나타났습니다. 여기서 이를 수정하려면 env-example의 복사본을 복사해야 합니다. 🎜
composer create-project laravel/laravel my-project2 "5.2.*" && \
cd my-project && \
php artisan key:generate

PHP 버전 수정

🎜.env 파일을 입력하여 PHP_VERSION을 찾아 PHP 버전을 56(기본값 71, 선택 71, 70)으로 수정하세요. , 56) . 🎜
server {

    listen 80;
    listen [::]:80;

    server_name my-project.com;
    # 加上public目录
    root /var/www/my-project/public;
    index index.php index.html index.htm;

    ...
}

Mysql 버전 및 구성 수정

🎜.env 파일을 입력하여 MYSQL을 찾고 mysql 버전을 56(기본값 8, 선택 사항 8)으로 수정합니다. , 5, 5.6, 5.5). 🎜🎜기타 설정은 개인의 필요에 따라 입력해야 합니다. 일반적으로 MYSQL_USER, MYSQL_PASSWORD, MYSQL_ROOT_PASSWORD를 수정해야 링크가 보장됩니다. 🎜
# /www/laradock
docker-compose restart nginx

Mysql 버전 선택 정보

🎜mysql은 공식 이미지를 사용하므로 허브.docker.com을 사용하여 mysql 공식 이미지에 포함된 버전을 쿼리할 수 있습니다. 구체적인 선택은 개인의 필요에 따라 다릅니다. 🎜🎜Docker가 laravel 개발 환경 예시를 구축합니다.🎜

nginx 구성 수정

🎜 일반적으로 아무것도 수정할 필요가 없으며 기본 구성을 사용하면 됩니다. 웹사이트 구성을 위해서는 laradock/nginx/sites를 입력해야 합니다. 🎜
포트를 수정해야 하는 경우 .env 파일을 입력하고 NGINX를 찾아 수정하면 됩니다.
# .env
DB_CONNECTION=mysql

# mysql的容器网络已经解析至"mysql"域,所以这里配置"mysql"域便能访问
DB_HOST=mysql

# 默认3306,一般不需要改动,如要改动端口应该与laradock/.env中的MYSQL_PORT一致
DB_PORT=3306

# 数据库
DB_DATABASE=default

# 用户
DB_USERNAME=packy

# 密码
DB_PASSWORD=123456-

Nginx 구성 정보

🎜nginx의 구성 파일은 laradock/nginx/sites에 저장됩니다. 새 웹사이트의 경우 해당 .example을 복사하고 이름을 .conf로 변경하여 수정할 수 있습니다. 참고: nginx에는 .conf 파일만 로드됩니다. 🎜🎜여기서는 예시로 laravel.conf.example을 복사하고 my-project.conf로 이름을 바꿉니다. 🎜
# .env
### NGINX

NGINX_HOST_HTTPS_PORT=1443
🎜동시에 호스트 시스템을 수정합니다( 즉, 윈도우 로컬 머신)hosts🎜rrreee

실행해 보세요

🎜이제 준비 작업이 거의 완료되었습니다. 🎜🎜다음 명령어를 실행하여 설치하고 사용하세요. 외국 소스에서 가져오는 속도가 느리기 때문에 기다려주세요. 🎜rrreee🎜Docker가 laravel 개발 환경 예시를 구축합니다. 🎜🎜완료 후 docker ps를 입력하면 컨테이너 실행 상태를 확인할 수 있습니다. 모든 것이 괜찮습니다! ! ! 🎜🎜Docker가 laravel 개발 환경 예시를 구축합니다.🎜 🎜http://my-project.com에 접속하여 효과를 확인해 보세요. 현재 php 파일은 정상적으로 접근이 가능합니다. 🎜🎜Docker가 laravel 개발 환경 예시를 구축합니다.🎜

laravel 실행

🎜 여기서는 workspace 컨테이너에 대해 언급할 수 없습니다. 이 컨테이너는 작업 공간 역할을 하며 다양한 도구(예: PHP CLI, Composer, Git, Linuxbrew, Node, V8JS, Gulp, SQLite, xDebug, Envoy, Deployer, Vim, Yarn 등). 🎜🎜그렇다면 이 기능을 어떻게 사용하나요? 🎜

首先进入workspace容器

# /www/laradock
docker-compose exec workspace bash

composer换国内源

进到容器后默认就是项目目录/var/www,由于composer用的是国外源比较慢,这里需要切换成国内源。

composer config -g repo.packagist composer https://packagist.phpcomposer.com

安装laravel

这里我们需要在my-project目录安装laravel。

*注:需要提前把my-project里的所有内容清空
composer create-project laravel/laravel my-project2 "5.2.*" && \
cd my-project && \
php artisan key:generate

配置并重启nginx

安装完成后,把laradock/nginx/sites/my-project.conf文件下的网站目录地址稍微改一下

server {

    listen 80;
    listen [::]:80;

    server_name my-project.com;
    # 加上public目录
    root /var/www/my-project/public;
    index index.php index.html index.htm;

    ...
}

重启nginx容器

# /www/laradock
docker-compose restart nginx

Docker가 laravel 개발 환경 예시를 구축합니다.

关于数据库服务

# .env
DB_CONNECTION=mysql

# mysql的容器网络已经解析至"mysql"域,所以这里配置"mysql"域便能访问
DB_HOST=mysql

# 默认3306,一般不需要改动,如要改动端口应该与laradock/.env中的MYSQL_PORT一致
DB_PORT=3306

# 数据库
DB_DATABASE=default

# 用户
DB_USERNAME=packy

# 密码
DB_PASSWORD=123456-

一些问题:

Q:运行失败,提示ERROR: for laradock_mysql_1  Cannot create container for service mysql: Drive sharing seems blocked by a firewall

A:先暂停你本机杀毒程序的防御进程。


Q:运行失败,提示ERROR: for laradock_nginx_1  Cannot start service nginx: driver failed programming external connectivity on endpoint laradock_nginx_1 (6e4f4761d30f4cd80c44c6b0fddfbd4ef0324529099aace02bee6a6653ce453a): Error starting userland proxy: Bind for 0.0.0.0:443 failed: port is already allocated

A:建议你切换端口,我已尝试改为1443能正常运行,目前只能以这种方式处理。


# .env
### NGINX

NGINX_HOST_HTTPS_PORT=1443

Q:为何网站目录必须以/var/www开头?

A:网站访问进入的是nginx容器,/var/www目录就是容器内网站目录存放的位置。由于配置在创建容器时,会将本地目录挂载至/var/www目录,所以就能访问到本地的代码。这块设置在laradock/.env中找到APPLICATION可自行设置。

相关推荐:

Docker的Mysql主从复制详解

零起步构建一个基于Docker的Laravel应用

使用docker基于daocloud自动化部署到自己的主机

위 내용은 Docker가 laravel 개발 환경 예시를 구축합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.