本地开发环境试错的好处
对于开发者来说,每天诞生的各种新技术都需要尝试,但开发者不太可能能够一一搭建环境并进行测试。 时间是非常宝贵的,得益于它,我们可以通过一个或几个命令来设置一个环境,这个环境可以大到一个特定版本的操作系统,也可以小到一个软件。 有一种获取软件的万无一失的方法。 后台会自动获取环境镜像并运行环境。
统一开发和生产环境
对于普通的小公司来说,搭建一个公共的开发环境并不是一件划算的事情。 然后就可以用来统一开发环境了,因为不管你用的是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/
浏览器返回结果
浏览器返回结果