您的位置  > 互联网

本地开发环境的好处,试错对开发者而言

本地开发环境试错的好处

对于开发者来说,每天诞生的各种新技术都需要尝试,但开发者不太可能能够一一搭建环境并进行测试。 时间是非常宝贵的,得益于它,我们可以通过一个或几个命令来设置一个环境,这个环境可以大到一个特定版本的操作系统,也可以小到一个软件。 有一种获取软件的万无一失的方法。 后台会自动获取环境镜像并运行环境。

统一开发和生产环境

对于普通的小公司来说,搭建一个公共的开发环境并不是一件划算的事情。 然后就可以用来统一开发环境了,因为不管你用的是Mac还是Mac。 如果也用在生产环境中,甚至可以直接打包一个环境,扔进去运行,再也不用担心开发和生产环境的差异了。

高性能

虚拟机的粒度是虚拟机,而虚拟机的粒度是受限制的应用。 相比之下,虚拟机占用内存更少、更轻量、性能更好。

二级启动还可以让我们在启动电脑的时候,不知不觉就运行开发环境了。

成果展示

我们可能经常需要向用户或同事展示相同的功能,但搭建演示环境的过程却非常麻烦。 现在我们可以直接将我们的镜像打包扔到那里,而不需要做任何环境配置工作。 同时我们也不用担心他们的环境配置会导致我们的产品无法运行。

安装

在mac平台上,只需下载一个dmg安装文件即可。 下载完后双击拖进去就可以了,应该是类似的。

就像安装QQ一样简单,万无一失。

附上下载链接:

成功后,如果版本信息出来,则说明安装成功,类似如下

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:43 2018
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     true

安装-

一般来说,Mac安装后都会带-。

对于其他平台,附下载链接:

安装完成后可以输入命令进行检测

➜  ~ docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018

如果没有出现版本相关信息,您可以尝试重新安装。

下载

项目地址就是我们可以找个地方克隆它。

这里我在我的用户目录下创建了一个新目录,然后克隆了该项目。

配置环境文件

复制到.env

cp env-example env

.env 文件是本地路径,NER 是远程映射路径。 根据要求,大多数情况下没有必要。

如果需要调试代码,还可以打开UG和EBUG选项。

如果还有其他需求,可以在.env中搜索,它已经分隔了大部分配置项。

运行容器

您输入的工作目录是克隆项目的根目录。 我的工作目录是~//。

然后运行以下命令

docker-compose up -d nginx mysql

你会看到自动执行了构建操作,并且构建完成后,后台自动启动了如下容器

那是因为 php-fpm 和 -in- 是和 nginx 一起启动的

所以实际上

docker-compose up -d nginx mysql

docker-compose up -d nginx workspace php-fpm mysql

这两个命令的效果是一样的。 您可以将它们都包含在内,也可以不包含它们。

up命令实际上是第一次启动时build+start的组合。 如果容器不存在,则构建一个容器并启动服务。 如果容器存在,则直接启动服务。 这就是-d的意思。 它在后台运行

配置网络项目

以下是我项目的部分配置

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root
......

请注意,数据库主机必须是别名。 如果在这里输入172.0.0.1或其他,连接将失败。

其他项目也一定如此。 配置数据库链接、redis 或链接必须设置为特定别名。 或者你可以告诉我找到每个容器的IP地址。 可以,但不建议这样做,因为IP会改变。

具体别名请参考./-.yml文件中的设置。

主要的技术实现应该是采用的虚拟桥技术。

配置主机主机

因为我们访问的时候,经常会通过主机上的浏览器发送请求,所以在主机上配置主机是必不可少的。

vim /etc/hosts

这里我添加一个我自己设置的虚拟域名

127.0.0.1       blog.test

然后保存并刷新主机。

配置nginx

转到 .//nginx/sites 文件夹,然后将其填充。 我们会发现已经为我们放入了很多列出的文件。

app.conf.example default.conf laravel.conf.example symfony.conf.example

根据需要复制一份,然后修改。 这并不难。 由于我们在本地开发一个博客项目,所以我只是复制.conf。 然后用vim打开。

cp laravel.conf.example blog.conf vim blog.conf

打开后内容...

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name laravel.test;
    root /var/www/laravel/public;
    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;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

我们会发现,如果没有特殊需要,我们不需要修改这大部分。 我们只需要关注“root”和“root”这两个参数即可。 只需将其更改为我们项目的名称即可。 这里我们将其更改为“博客”。

以下是修改后的内容

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name blog.test;
    root /var/www/blog/public;
    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;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

使用权

输入网址

http://blog.test/

浏览器返回结果

本地开发环境试错的好处

对于开发者来说,每天诞生的各种新技术都需要尝试,但开发者不可能一一搭建环境并进行测试。 时间是非常宝贵的,得益于它,我们可以通过一个或几个命令来设置一个环境,这个环境可以大到一个特定版本的操作系统,也可以小到一个软件。 有一种获取软件的万无一失的方法。 后台会自动获取环境镜像并运行环境。

统一开发和生产环境

对于普通的小公司来说,搭建一个公共的开发环境并不是一件划算的事情。 然后就可以用来统一开发环境了,因为不管你用的是Mac还是Mac。 如果也用在生产环境中,甚至可以直接打包一个环境,扔进去运行,再也不用担心开发环境和生产环境的差异了。

高性能

虚拟机的粒度是虚拟机,而虚拟机的粒度是受限制的应用。 相比之下,虚拟机占用内存更少、更轻量、性能更好。

二级启动还可以让我们在启动电脑的时候,不知不觉就运行开发环境了。

成果展示

我们可能经常需要向用户或同事展示相同的功能,但搭建演示环境的过程却非常麻烦。 现在我们可以直接将我们的镜像打包扔到那里,而不需要做任何环境配置工作。 同时我们也不用担心他们的环境配置会导致我们的产品无法运行。

安装

在mac平台上,只需下载一个dmg安装文件即可。 下载完后双击拖进去就可以了,应该是类似的。

就像安装QQ一样简单,万无一失。

附上下载链接:

成功后,如果版本信息出来,则说明安装成功,类似如下

Client: Docker Engine - Community
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:47:43 2018
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:55:00 2018
  OS/Arch:          linux/amd64
  Experimental:     true

安装-

一般来说,Mac安装后都会带-。

对于其他平台,附下载链接:

安装完成后可以输入命令进行检测

➜  ~ docker-compose version
docker-compose version 1.23.2, build 1110ad01
docker-py version: 3.6.0
CPython version: 3.6.6
OpenSSL version: OpenSSL 1.1.0h  27 Mar 2018

如果没有出现版本相关信息,您可以尝试重新安装。

下载

项目地址就是我们可以找个地方克隆它。

这里我在我的用户目录下创建了一个新目录,然后克隆了该项目。

配置环境文件

复制到.env

cp env-example env

.env 文件是本地路径,NER 是远程映射路径。 根据要求,大多数情况下没有必要。

如果需要调试代码,还可以打开UG和EBUG选项。

如果还有其他需求,可以在.env中搜索,它已经分隔了大部分配置项。

运行容器

您输入的工作目录是克隆项目的根目录。 我的工作目录是~//。

然后运行以下命令

docker-compose up -d nginx mysql

你会看到自动执行了构建操作,并且构建完成后,后台自动启动了如下容器

那是因为 php-fpm 和 -in- 是和 nginx 一起启动的

所以实际上

docker-compose up -d nginx mysql

docker-compose up -d nginx workspace php-fpm mysql

这两个命令的效果是一样的。 您可以将它们都包含在内,也可以不包含它们。

up命令实际上是第一次启动时build+start的组合。 如果容器不存在,则构建一个容器并启动服务。 如果容器存在,则直接启动服务。 这就是-d 的意思。 它在后台运行

配置网络项目

以下是我项目的部分配置

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=root
......

请注意,数据库主机必须是别名。 如果在这里输入172.0.0.1或其他,连接将失败。

其他项目也一定如此。 配置数据库链接、redis 或链接必须设置为特定别名。 或者你说我可以找到每个容器的IP,好吗? 可以,但不建议这样做,因为IP会改变。

具体别名请参考./-.yml文件中的设置。

主要的技术实现应该是采用的虚拟桥技术。

配置主机主机

因为我们访问的时候,经常会通过主机上的浏览器发送请求,所以在主机上配置主机是必不可少的。

vim /etc/hosts

这里我添加一个我自己设置的虚拟域名

127.0.0.1       blog.test

然后保存并刷新主机。

配置nginx

转到 .//nginx/sites 文件夹,然后将其填充。 我们会发现已经为我们放入了很多列出的文件。

app.conf.example default.conf laravel.conf.example symfony.conf.example

只需根据您的需要复制一份并修改即可。 这并不难。 由于我们在本地开发一个博客项目,所以我只是复制.conf。 然后用vim打开。

cp laravel.conf.example blog.conf vim blog.conf

打开后内容...

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name laravel.test;
    root /var/www/laravel/public;
    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;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

我们会发现,如果没有特殊需求,这些地方大部分我们都不需要修改。 我们只需要关注“root”和“root”这两个参数即可。 只需将其更改为我们项目的名称即可。 这里我们将其改为“博客”

以下是修改后的内容

server {

    listen 80;
    listen [::]:80;

    # For https
    # listen 443 ssl;
    # listen [::]:443 ssl ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name blog.test;
    root /var/www/blog/public;
    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;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;

使用权

输入网址

http://blog.test/

浏览器返回结果

浏览器返回结果