0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用Docker搭建本地开发环境

我快闭嘴 来源:嵌入式悦翔园 作者:嵌入式悦翔园 2022-09-22 14:29 次阅读

本地开发之痛苦

在开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题环境变量问题端口冲突,经编译库问题等等。

开发途中,可能你又需要依赖一些其他的服务,你最好祈祷不会出问题,可能你又要重写来配置你的环境,因为你的所有的依赖服务都在你的唯一的工作空间里面。

如果你的伙伴的操作系统不统一,可能你还会遇到一些不同元字符解析不一致的问题。

然后上线之前,可能你在本地开发调试都可以完美运行,一但部署到服务器,就会出现各种问题。因为大多数情况下,我们的开发环境和生产环境并不相同。

可能你下次又有要用到一个新的开项目的开发环境。你又要重复面对上面这些问题.

你不得不去审视,你要话费大量的时间用在搭建环境当中来。

什么是Docker

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。对我们而言,我觉得只需要把他理解成一个便携的应用容器 即可

Docker本地开发环境的好处

试错

对开发者而言,每天会催生出的各式各样的新技术都需要尝试,然而开发者却不太可能为他们一一搭建好环境并进行测试。时间非常宝贵,正是得益于 Docker,让我们有可能在一条或者几条命令内就搭建完环境,而且这个环境大到一个特定版本的操作系统,小到一个软件。Docker 有一个傻瓜化的获取软件的方法,Docker后台会自动获得环境镜像并且运行环境。

统一开发和生产环境

对于一般的小公司来说,搭建一个公用的开发环境是一件不那么划算的事情。那么就可以用 Docker 来统一开发环境,因为不管你用的是 Windows、Mac 还是 Ubuntu。如果生产环境也使用的 Docker 的话,你甚至可以直接打包一套环境,直接丢上去就可以运行了,再也不用担心开发-生产环境之间的差异了。

高性能

虚拟机的粒度是虚拟出的机 ,而 Docker 的粒度则是被限制的应用 ,相比较而言 Docker 的内存占用更少,更加轻量级,性能也更优。

而秒级的启动,也可以让我们启动电脑时候,开发环境的运行是无感知的。

成果展示

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

安装Docker

在mac平台下,就是去下载一个dmg的安装文件。下载好了之后,双击,然后拖入就可以了,windows应该也是类似的。

就是安装qq一样简单,傻瓜式的。

附上dockerhub上的下载链接:

https://hub.docker.com/search/?type=edition&offering=community&q=

成功之后属于docker version如果出来版本信息就是安装成功,类似如下

Client:DockerEngine-Community
Version:18.09.0
APIversion:1.39
Goversion:go1.10.4
Gitcommit:4d60db4
Built:WedNov700432018
OS/Arch:darwin/amd64
Experimental:false

Server:DockerEngine-Community
Engine:
Version:18.09.0
APIversion:1.39(minimumversion1.12)
Goversion:go1.10.4
Gitcommit:4d60db4
Built:WedNov700002018
OS/Arch:linux/amd64
Experimental:true

安装docker-compose

一般来说,mac安装docker之后就会携带docker-compose。

其他平台,附上下载链接:https://github.com/docker/compose/releases

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

➜~docker-composeversion
docker-composeversion1.23.2,build1110ad01
docker-pyversion:3.6.0
CPythonversion:3.6.6
OpenSSLversion:OpenSSL1.1.0h27Mar2018

如果没有出现版本相关信息,可以尝试再次安装

下载laradock

laradock的项目地址是https://github.com/laradock/laradock 我们找一个地方clone下来即可。

我这里是在我的用户目录下面新建了一个Docker目录,然后clone了项目下来。

配置env文件

拷贝example成.env

cpenv-exampleenv

.env文件中APP_CODE_PATH_HOST是本地路径APP_CODE_PATH_CONTAINER是远程映射路径,看需求修改,大多数情况下是不需要的

如果有调试代码的需求,也可以将PHP_FPM_INSTALL_XDEBUGWORKSPACE_INSTALL_XDEBUG两个选项打开

如果还有其他的需求,可以在.env里面搜索,里面已经将大多数配置项都给独立出来了

运行容器

进入到laradock的工作目录下面,就是clone的项目的根目录我的工作目录就是~/Docker/laradock。

然后运行如下命令

docker-composeup-dnginxmysql

就会看到在自动执行build操作,并且build完了之后自动后台启动了如下容器

  • nginx

  • php-fpm

  • workspace

  • mysql

那是因为php-fpm和workspace还有docker-in-docker是随nginx一并启动的

所以实际上

docker-composeup-dnginxmysql

docker-composeup-dnginxworkspacephp-fpmmysql

这两条命令的效果是一样的,可以都带上,也可以不写。

up命令在第一次启动的时候实际上就是build + start的组合,如果容器不存在,那么就build一个容器,并且启动服务,如果容器存在那么直接启动服务,大概就是这么个意思 -d的意思是后台运行

配置web项目

以下是我laravel项目的部分配置

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

注意,数据库主机必须得是别名才可以,如果DB_CONNECTION这个地方输入172.0.0.1或者是localhost都是会连接失败的。

在其它的项目中也必须是这样的,配置数据库链接,redis,或者MemCache链接都必须设置成具体的别名。或者你说我找到各个容器的ip,可以嘛。可以,但是并不建议这样做,因为ip是会变动的。

具体别名可以参考./docker-compose.yml文件中的设置

这个主要的技术实现应该是用了docker的虚拟网桥技术.

配置宿主机的host

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

vim/etc/hosts

我这里加入一条我自己设置的虚拟域名

127.0.0.1blog.test

然后保存,刷新下host。

配置nginx

进入到./laradock/nginx/sites文件夹,然后ll一下,我们会发现,laradock已经帮我们放了好多列举的文件进来

app.conf.exampledefault.conflaravel.conf.examplesymfony.conf.example

根据需求拷贝一份,然后修改一下就可以了,都不是很难,由于我们本地是laravel开发的博客项目,所以我就直接拷贝laravel.conf.example,然后使用vim打开

cplaravel.conf.exampleblog.confvimblog.conf

打开后的内容...

server{

listen80;
listen[::]:80;

#Forhttps
#listen443ssl;
#listen[::]:443sslipv6only=on;
#ssl_certificate/etc/nginx/ssl/default.crt;
#ssl_certificate_key/etc/nginx/ssl/default.key;

server_namelaravel.test;
root/var/www/laravel/public;
indexindex.phpindex.htmlindex.htm;

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

location~.php${
try_files$uri/index.php=404;
fastcgi_passphp-upstream;
fastcgi_indexindex.php;
fastcgi_buffers1616k;
fastcgi_buffer_size32k;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
#fixestimeouts
fastcgi_read_timeout600;
includefastcgi_params;****

我们会发现,如果没有特殊需求的话,这个里面大多数地方我们并不需要修改。我们只需要关注server_name和root这两个参数,把这个里面的laravel换成我们项目名就可以了,这里我们换成blog

下面是修改后的内容

server{

listen80;
listen[::]:80;

#Forhttps
#listen443ssl;
#listen[::]:443sslipv6only=on;
#ssl_certificate/etc/nginx/ssl/default.crt;
#ssl_certificate_key/etc/nginx/ssl/default.key;

server_nameblog.test;
root/var/www/blog/public;
indexindex.phpindex.htmlindex.htm;

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

location~.php${
try_files$uri/index.php=404;
fastcgi_passphp-upstream;
fastcgi_indexindex.php;
fastcgi_buffers1616k;
fastcgi_buffer_size32k;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
#fixestimeouts
fastcgi_read_timeout600;
includefastcgi_params;

访问

输入 url http://blog.test/,浏览器返回结果:

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Web
    Web
    +关注

    关注

    2

    文章

    1238

    浏览量

    68465
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21883
  • Docker
    +关注

    关注

    0

    文章

    437

    浏览量

    11603

原文标题:使用 Docker 搭建本地开发环境!真心强啊

文章出处:【微信号:嵌入式悦翔园,微信公众号:嵌入式悦翔园】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】搭建基于Linux的Docker开发环境

    安装包和虚拟机镜像,使得环境搭建更为方便。 由于在论坛看到的大部分开发者使用的环境都是在Windows上安装Docker或虚拟机,这样的好
    发表于 01-23 10:07

    如何在win10家庭版上用docker快速搭建鸿蒙开发环境

    # 如何在win10家庭版上用docker快速搭建鸿蒙开发环境 (Building the Development Environment for HarmonyOS by
    发表于 01-26 22:00

    嵌入式linux开发环境该如何去搭建

    嵌入式linux开发环境搭建Docker版,基于iTop 4412开发板)文章目录嵌入式linux开发
    发表于 11-04 08:09

    介绍一下linux环境docker的使用流程

    的含义。Docker 是一种引擎,基于这个引擎,开发者能让他们开发的应用处于一个有隔离性的、可移植性的容器中,以便于发布于各种机器中而无需考虑兼容性问题。开发者可以使用
    发表于 04-27 15:03

    本地测试环境搭建

    本文主要介绍了本地测试环境搭建搭建一个本地测试环境无疑是个明智的选择,再结合GitHub、Jen
    的头像 发表于 01-31 16:01 2622次阅读
    <b class='flag-5'>本地</b>测试<b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    如何搭建鸿蒙开发环境

    开发某一个平台的程序,那么首先要搭建本地开发环境,那么如何搭建鸿蒙
    的头像 发表于 02-24 11:25 3228次阅读
    如何<b class='flag-5'>搭建</b>鸿蒙<b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    嵌入式linux开发环境搭建Docker版,基于iTop 4412开发板)

    嵌入式linux开发环境搭建Docker版,基于iTop 4412开发板)文章目录嵌入式linux开发
    发表于 11-01 16:57 0次下载
    嵌入式linux<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>(<b class='flag-5'>Docker</b>版,基于iTop 4412<b class='flag-5'>开发</b>板)

    Digispark开发环境搭建

    Digispark开发环境搭建
    发表于 11-15 20:51 16次下载
    Digispark<b class='flag-5'>开发</b><b class='flag-5'>环境</b><b class='flag-5'>搭建</b>

    在linux上进行单片机开发(使用docker搭建环境)

    前言以前每次换一台电脑或重装系统又要重新搭建一次环境, 搭建环境是非常枯燥的事情, 使用docker搭建
    发表于 11-23 16:36 11次下载
    在linux上进行单片机<b class='flag-5'>开发</b>(使用<b class='flag-5'>docker</b><b class='flag-5'>搭建</b><b class='flag-5'>环境</b>)

    Docker高效搭建本地开发环境教程分享 1

    开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。
    的头像 发表于 02-03 15:49 368次阅读

    Docker 高效搭建本地开发环境教程分享 2

    开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。
    的头像 发表于 02-03 15:49 509次阅读

    Docker搭建更酷的本地开发环境

    以前要在本地跑一些有意思的工程和实验,都需要通过在本地装上一大堆软件来实现。最近发现有一种更酷的方式:Docker。 用 Docker本地
    的头像 发表于 05-05 10:06 488次阅读
    用<b class='flag-5'>Docker</b><b class='flag-5'>搭建</b>更酷的<b class='flag-5'>本地</b><b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    基于Docker搭建本地开发环境

    以前要在本地跑一些有意思的工程和实验,都需要通过在本地装上一大堆软件来实现。最近发现有一种更酷的方式:Docker
    发表于 06-13 16:16 560次阅读
    基于<b class='flag-5'>Docker</b><b class='flag-5'>搭建</b><b class='flag-5'>本地</b><b class='flag-5'>开发</b><b class='flag-5'>环境</b>

    怎么搭建和管理自己的环境

      运行你的第一个容器 以前要在本地跑一些有意思的工程和实验,都需要通过在本地装上一大堆软件来实现。最近发现有一种更酷的方式:Docker。 用Docker
    的头像 发表于 06-30 10:06 250次阅读
    怎么<b class='flag-5'>搭建</b>和管理自己的<b class='flag-5'>环境</b>

    php运行环境本地测试地址是

    PHP运行环境本地测试地址是指在本地计算机上搭建的用于测试和运行PHP代码的的环境地址。搭建该运
    的头像 发表于 12-04 15:25 295次阅读