How to build a Docker development environment for Laravel yourself

不言
Release: 2023-04-03 10:36:01
Original
2529 people have browsed it

The content of this article is about setting up a Docker development environment for Laravel. It has certain reference value. Friends in need can refer to it.

I haven’t written anything for a long time. Today I will talk about how to build a Docker environment for Laravel to run.

The most famous one on the market is "laradock" https://github.com/laradock/laradock

Docker PHP development environment.
Usage reference: http:/ /laradock.io

Since it is "self-built", we can refer to this to minimize the needs for Laravel operation.

The following are the basic conditions I listed:

  1. Software: PHP 7.2, Nginx, MySQL, Composer, NPM or Yarn, etc.;

  2. Use domestic mirroring;

  3. Docker-Compose

  4. To achieve scalability, just like "laradock", use the Docker-Compose orchestration method to assemble several core images together .

php-fpm

Here we are using the "DaoCloud" accelerated image -

7.2-fpm-alpine

.

This version uses both thePHP 7.2version and the

alpine

minimized system. Based on this, you can install additional tools required for the environment: such as,composer,nodejs,python,yarn, etc.

FROM daocloud.io/php:7.2-fpm-alpine MAINTAINER coding01 <yemeishu@126.com> RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk add --no-cache --virtual .build-deps \ $PHPIZE_DEPS \ curl-dev \ imagemagick-dev \ libtool \ libxml2-dev \ postgresql-dev \ sqlite-dev \ && apk add --no-cache \ curl \ git \ imagemagick \ mysql-client \ postgresql-libs \ && pecl install imagick \ && docker-php-ext-enable imagick \ && docker-php-ext-install \ curl \ iconv \ mbstring \ pdo \ pdo_mysql \ pdo_pgsql \ pdo_sqlite \ pcntl \ tokenizer \ xml \ zip \ && curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer \ && apk del -f .build-deps # 修改 composer 为国内镜像 RUN composer config -g repo.packagist composer https://packagist.laravel-china.org # install prestissimo RUN composer global require "hirak/prestissimo" # install laravel envoy RUN composer global require "laravel/envoy" #install laravel installer RUN composer global require "laravel/installer" RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk update && apk add -u nodejs libpng-dev python ENV PATH /root/.yarn/bin:$PATH RUN apk update \ && apk add curl bash binutils tar \ && rm -rf /var/cache/apk/* \ && /bin/bash \ && touch ~/.bashrc \ && curl -o- -L https://yarnpkg.com/install.sh | bash \ && yarn config set registry 'https://registry.npm.taobao.org' \ && npm install -g cnpm --registry=https://registry.npm.taobao.org WORKDIR /var/www
Copy after login
In which to install thealpinesystem plug-in, we use the

mirrors.aliyun.com

Alibaba Cloud mirror.php:7.2-fpm-alpineFor specific usage, please refer to: https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7

nginxWe use

nginx

, mainly to load the website configuration file into

nginx

.

FROM daocloud.io/nginx:1.13-alpine MAINTAINER coding01 <yemeishu@126.com> ADD vhost.conf /etc/nginx/conf.d/default.conf WORKDIR /var/www
Copy after login
The rest is to connect these images. Finally, take a look atdocker-compose.ymlFile content:

version: '2' services: # The Application app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www environment: - "DB_PORT=3306" - "DB_HOST=database" - "REDIS_HOST=redis" - "REDIS_PORT=6379" # The Web Server web: build: context: ./ dockerfile: web.dockerfile working_dir: /var/www volumes_from: - app ports: - 8080:80 # The Database database: image: daocloud.io/mysql:5.7.4 volumes: - dbdata:/var/lib/mysql environment: - "MYSQL_DATABASE=homestead" - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=secret" - "MYSQL_ROOT_PASSWORD=secret" ports: - "3306:3306" redis: image: daocloud.io/library/redis:4.0.10-alpine command: redis-server --appendonly yes volumes: dbdata:
Copy after login

Test it againCreate Laravel project

composer create-project laravel/laravel demo
Copy after login

Note:

For testing, you can delete the

vendor

folder and thecomposer.lockfile.git cloneIn the same folder as the

demo

project,

git clone

our self-built "laraveldocker":

git clone https://github.com/fanly/laraveldocker.git
Copy after login
Modify docker-compose.ymlExecute our project with the path of the

docker-compose.yml

file:

app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www
Copy after login

buildin

laraveldocker

Execute the build command under:

docker-compose up
Copy after login

The whole speed is quite fast

Next enter the container

docker exec -it de075c525528 bash
Copy after login

Let’s see the effect of installing the plug-in:

Usinghttps:/ /packagist.laravel-china.org
Domestic mirror.

Note: This mirror is a public welfare project jointly launched by the Laravel China community, Youpaiyun and Youfanyuanyang, aiming to provide stable and high-speed Composer domestic mirroring services for the majority of PHP users.It is recommended to use

Reference: http://laravel-china.org/topics/4484/composer-mirror-use-help

USE

yarn

or
cnpm

Install plugin:

GenerateLaravel key secret
:

cp .env.example .env php artisan key:generate Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.
Copy after login

Run Let’s take a look at the effect:

Let’s take a look at the database connection next, modify

.env:

DB_CONNECTION=mysql DB_HOST=database DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret
Copy after login

We usephp artisan make: authto generate layout, registration and login views and routes for all authentication interfaces. At the same time, it will also generate

HomeController

to handle the application’s login request. Usephp artisan migrateto load data.

Let’s take a look at the data table:

At this point, it shows that we are connectedMySQL
The database is OK.

SummaryIn the learning process, it is best to use the Dockerfile made by others. Although it can be used directly, it would be best if it can be self-sufficient. .

You can also learn more by building your own docker development environment. In the future, we will continue to improve and minimize it to meet development needs.

Related recommendations:

Parsing of URL access patterns in TP5


Nginx Configuration detailed code

The above is the detailed content of How to build a Docker development environment for Laravel yourself. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!