使用docker搭建一套开发环境全家桶的详细教程_docker

来源:脚本之家  责任编辑:小易  

每个image都有一个唯一的2113id来标识,同样container也有.这个唯5261一的id一般很长,比如:c59dc2dfad95,但是4102一般我们输入的时候只要输入若干位能标识1653当前系统内唯一标识某一个image就可以了.比如只要输入c59d可能就可以标识这个image.除了id,还可以给一个image起名字,这样子也可以通过name来操作一个image.run通过docker run image_name可以直接启动本地的一个image.这个命令后面可以加很多子参数来开启其他功能.如果本地不存在这个image,那么docker会去官方的仓库去下载,这个仓库你可以理解为github一样的网站,上面存放了许多别人push上去的image.tag每个image都有一个名称.除了名称之外还有一个叫做tag的东西,这个称之为标签的东西可以用来标识同一个image的不同版本.如果你没有给一个image指定一个tag,那么docker会默认为这个iamge添加一个名为:latest的tag.如果你使用docker run ubuntu,那么就会默认运行ubuntu:latest.如果本地没有这个image,那么就会去从仓库下载ubuntu:latest的iamge.很多时候你会看到ubuntu:14.04的image.这个14.04就是代表这个image的tag.只是很多时候image制作者把tag用来标记version了而已,每个image都有一个唯一2113的5261id来标识,同样container也有.这个唯一的id一般很长4102,比如:c59dc2dfad95,但是一般我们输入的时1653候只要输入若干位能标识当前系统内唯一标识某一个image就可以了.比如只要输入c59d可能就可以标识这个image.除了id,还可以给一个image起名字,这样子也可以通过name来操作一个image.run通过docker run image_name可以直接启动本地的一个image.这个命令后面可以加很多子参数来开启其他功能.如果本地不存在这个image,那么docker会去官方的仓库去下载,这个仓库你可以理解为github一样的网站,上面存放了许多别人push上去的image.tag每个image都有一个名称.除了名称之外还有一个叫做tag的东西,这个称之为标签的东西可以用来标识同一个image的不同版本.如果你没有给一个image指定一个tag,那么docker会默认为这个iamge添加一个名为:latest的tag.如果你使用docker run ubuntu,那么就会默认运行ubuntu:latest.如果本地没有这个image,那么就会去从仓库下载ubuntu:latest的iamge.很多时候你会看到ubuntu:14.04的image.这个14.04就是代表这个image的tag.只是很多时候image制作者把tag用来标记version了而已www.zgxue.com防采集请勿采集本网。

DNMP介绍

1、首先你要确定使用什么基础镜像:因为你的项目是JAVA项目,在网页链接hub仓库寻找自己需要的基础镜像,推荐使用JAVA 8基础镜像 2、搞定服务运行的相关文件,

DNMP(Docker + Nginx + MySQL + PHP7/5 + Redis)是一款全功能的LNMP一键安装程序。支持的服务丰富、功能强大、使用简单、兼容多平台。是适用于多端的一款docker开发与生产环境的PHP环境全家桶。

1. 创建一个用于开发Django App的目录 mkdir django-example && cd django-example 2. 构建基本开发环境 touch Dockerfile touch pip.conf requirements.

DNMP项目特点: 100%开源 100%遵循Docker标准 支持多版本PHP共存,可任意切换(PHP5.4、PHP5.6、PHP7.1、PHP7.2、PHP7.3) 支持绑定任意多个域名 支持HTTPS和HTTP/2 PHP源代码、MySQL数据、配置文件、日志文件都可在Host中直接修改查看 内置完整PHP扩展安装命令 默认支持 pdo_mysql、 mysqli、 mbstring、 gd、 curl、 opcache等常用热门扩展,根据环境灵活配置 可一键选配常用服务:

    多PHP版本:PHP5.4、PHP5.6、PHP7.1-7.3 Web服务:Nginx、Openresty 数据库:MySQL5、MySQL8、Redis、memcached、MongoDB、ElasticSearch 消息队列:RabbitMQ 辅助工具:Kibana、Logstash、phpMyAdmin、phpRedisAdmin、AdminMongo 实际项目中应用,确保 100%可用 所有镜像源于Docker官方仓库,安全可靠 一次配置,Windows、Linux、MacOs皆可用 支持快速安装扩展命令 install-php-extensions apcu 具体使用文档可参考:https://gitee.com/bruce_qiq/dnmp/blob/master/README.md。文档中已经有一个明确的使用教程。接来下,主要针对安装完之后,做的一些基本操作做一个简单的演示,因为部分操作在源文档不是很详细,并且有明显的坑。主要记录几个功能:

可以在docker里搭建可视化开发环境吗?如题所示 如题所示 展开 我来答 答题抽奖 首次认真答题后 即可获得3次抽奖机会,100%中奖。 更多问题 分享 微信扫一扫

1.修改无法连接MySQL问题。

Docker的开发环境 在深入Docker和IDE细节之前,让我们看看,为什么得把Docker放进必需的开发工具列表中。 构建系统 首先,Docker能够使我们的构建环境便携,可重复以及

2.配置NGINX虚拟域名。

对于EUT来讲,要确保每次测试时都是同一台,且测试状态一致。 对于测试环境、外设搭配、测试条件、摆设等等,都要保持一致性。 对于测试用的软件、设置等等

3.安装PHP扩展。

因为个人打算持续使用该包来做自己的开发环境,后面会针对不同的问题做总结,同时也会根据原主的仓库基础下,进行迭代更新。欢迎关注。公号卡二条的技术圈

修改MySQL连接问题

由于dnmp在安装时,是将本地的3305端口映射到MySQL容器的3306端口,因此我们在连接是需要连接3305端口。

在示例代码的www目录下面,有一个localhost目录,我们找到测试MySQL的一段代码,如下:

// 检测MySQL服务function getMysqlVersion(){ if (extension_loaded('PDO_MYSQL')) { try { $dbh = new PDO('mysql:host=192.168.2.103;dbname=mysql', 'root', '123456'); $sth = $dbh->query('SELECT VERSION() as version'); $info = $sth->fetch(); } catch (PDOException $e) { return $e->getMessage(); } return $info['version']; } else { return 'PDO_MYSQL 扩展未安装 ×'; }}

我们只需要修改为如下代码:

// 检测MySQL服务function getMysqlVersion(){ if (extension_loaded('PDO_MYSQL')) { try { $dbh = new PDO('mysql:host=192.168.2.103;port=3305;dbname=mysql', 'root', '123456'); $sth = $dbh->query('SELECT VERSION() as version'); $info = $sth->fetch(); } catch (PDOException $e) { return $e->getMessage(); } return $info['version']; } else { return 'PDO_MYSQL 扩展未安装 ×'; }}

这里的192.168.2.103是我们宿主机的ip,根据你实际的情况填写即可。可以通过ifconfig查看。如果是Windows系统,则使用ipconfig查看。

ifconfig

配置NGINX域名

在配置之前,我们需要明确这么几个东西。我们源码目录位置、NGINX配置文件位置、NGINX日志文件位置。特别注意:

1.我们可以通过截图看见,conf.d目录下面存在两个配置文件。这两个就是我事先配置好的域名文件。这个文件,是通过NGINX容器映射到本地磁盘。因此可以通过宿主机进行查看。

2.logs文件就是NGINX的error,access等相关日志文件,同样的是在NGINX容器中映射到宿主机的。

3.这里的www就是程序源码路径,我们的所有程序源码都放在这里即可。

对于NGINX域名配置文件,推荐进入到容器进行编写,而不是通过在宿主机进行编写。

第一步:进入我们的www目录,安装一个应用程序。这里推荐使用compser来安装,对于composer的使用,也可以参考文档进行简单配置即可使用。

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  composer create-project topthink/think=5.1.35 tp5Creating a "topthink/think=5.1.35" project at "./tp5"Installing topthink/think (v5.1.35) - Installing topthink/think (v5.1.35): Loading from cacheCreated project in /app/tp5Loading composer repositories with package informationUpdating dependencies (including require-dev)Package operations: 2 installs, 0 updates, 0 removals - Installing topthink/think-installer (v2.0.0): Loading from cache - Installing topthink/framework (v5.1.39): Loading from cacheWriting lock fileGenerating autoload files ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  lltotal 0drwxr-xr-x 3 ert staff 96B 9 6 22:02 localhostdrwxr-xr-x 19 ert staff 608B 9 8 22:26 tp5

这样本地就按照好了一个tp5的框架了。第二步:进入NGINX容器,通过docker ps查看docker容器的container-id,使用docker exec命令进入到容器内部。

ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0f5f9cd08aa2 dnmp_php "docker-php-entrypoi…" 27 hours ago Up About an hour 9000/tcp, 9501/tcp php8bc44fc8c578 dnmp_nginx "/docker-entrypoint.…" 27 hours ago Up 26 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp nginxf02ad53bf14d mysql:5.7.28 "docker-entrypoint.s…" 27 hours ago Up 26 hours 33060/tcp, 0.0.0.0:3305->3306/tcp mysql5 ert@ertiaodeMac-mini  ~/develop/env/dnmp/www   master ●  docker exec -it 8bc44fc8c578 /bin/sh/www # lslocalhost tp5

进入NGINX配置文件路径

/ # cd /etc/nginx//etc/nginx # ls -latotal 60drwxr-xr-x 1 root root 4096 Sep 8 20:23 .drwxr-xr-x 1 root root 4096 Sep 7 19:34 ..drwxr-xr-x 5 root root 160 Sep 8 20:05 conf.d-rw-r--r-- 1 root root 429 Sep 6 22:02 fastcgi-php.conf-rw-r--r-- 1 root root 1077 Jul 8 00:14 fastcgi.conf-rw-r--r-- 1 root root 1062 Sep 6 22:02 fastcgi_params-rw-r--r-- 1 root root 2837 Jul 8 00:14 koi-utf-rw-r--r-- 1 root root 2223 Jul 8 00:14 koi-win-rw-r--r-- 1 root root 5231 Jul 8 00:14 mime.typeslrwxrwxrwx 1 root root 22 Jul 11 04:27 modules -> /usr/lib/nginx/modules-rw-r--r-- 1 root root 760 Sep 6 22:02 nginx.confdrwxr-xr-x 2 root root 4096 Sep 8 20:23 rewrite-rw-r--r-- 1 root root 636 Jul 8 00:14 scgi_params-rw-r--r-- 1 root root 664 Jul 8 00:14 uwsgi_params-rw-r--r-- 1 root root 3610 Jul 8 00:14 win-utf

conf.d就是我们的域名配置路径,nginx就是默认的配置文件。

创建一个域名配置文件。

/etc/nginx # cd conf.d/ && touch tp5.conf/etc/nginx/conf.d # ls -latotal 16drwxr-xr-x 5 root root 160 Sep 8 20:05 .drwxr-xr-x 1 root root 4096 Sep 8 20:23 ..-rw-r--r-- 1 root root 48 Sep 6 22:02 .gitignore-rw-r--r-- 1 root root 2254 Sep 6 22:02 localhost.conf-rw-r--r-- 1 root root 505 Sep 8 20:29 tp5.conf

配置tp5.conf文件。复制如下内容:

server { listen 80; server_name tp5.com; root /www/tp5/public; index index.php; #NGINX日志文件,如果是其他的域名,直接替换nginx.tp5.com.xx.log文件名称即可。 access_log /var/log/nginx/nginx.tp5.com.access.log; error_log /var/log/nginx/nginx.tp5.com.error.log; #thinkphp5的url重写文件,避免重复编写,单独放一个文件,以后其他的thinkphp项目,直接引入即可。 include rewrite/thinkphp.conf; location ~ \.php$ { # 这里的php是php容器的名称,可以改为实际的ip,不建议使用,因为ip会变化。 fastcgi_pass php:9000; include fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}

测试域名配置,并重启NGINX服务。

/etc/nginx/conf.d # nginx -t && nginx -s reloadnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful/etc/nginx/conf.d #

将域名添加到宿主机的host文件。

访问测试

PHP扩展安装

在搭建docker环境时,PHP的Redis扩展默认是没安装,这里就以Redis扩展为例。

由于内置了部分扩展(具体有哪些扩展,参考上面提到的使用文档),因此直接使用命令安装即可。

install-php-extensions redis

测试扩展

/www # php --ri redisredisRedis Support => enabledRedis Version => 5.3.1......

总结

到此这篇关于使用docker搭建一套开发环境全家桶的文章就介绍到这了,更多相关docker搭建开发环境全家桶内容请搜索真格学网以前的文章或继续浏览下面的相关文章希望大家以后多多支持真格学网! 您可能感兴趣的文章:使用Docker快速搭建Oracle开发环境的方法教程详解MAC OSX Docker开发环境搭建Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)搭建基于Docker的PHP开发环境的详细教程

  2113在Mac的home目录~/.boot2docker下创建了虚拟机所需5261要的文件,其中boot2docker.iso是虚拟机映像,这4102是一个由CD-ROM引导的TinyCoreLinux系统;而1653boot2docker-vm.vmdk文件则是你的虚拟机磁盘,你所有的持久化数据都存放在这里,包括docker创建的lxc容器等文件。  在Mac下,docker被分为客户端docker-client和服务端docker-daemon两部分,如果是在linux(比如ubuntu),实际上则是同一个可执行文件同时充当客户端和服务端。docker-daemon可以监听unix scoket,也可以在tcp socket(默认端口为4234),docker-client会通过一个叫DOCKER_HOST的环境变量读取服务地址和端口,因此你应该在你的bash_profile文件里面添加这么一行:  export DOCKER_HOST=tcp://127.0.0.1:4243  docker-daemon跑在虚拟机上,这个程序实际上就是接收docker-client发送过来的消息命令,创建、启动和销毁lxc容器,以及docker本身的版本管理、映像存储等等 运行你的第一个docker容器 安装完成后,就差不多可以开始创建和运行docker容器了,在这之前,你首先得下载一个Image,什么是Image?我们先来了解docker的2个基础概念:Image和Container。  Container和Image 在Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图:  Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不同的Container可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container。  那Image和Container的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用docker commit 命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于git commit命令,感觉真棒!内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 将spring boot应用打入docker中运行的实现方法
  • docker容器化spring boot应用详解
  • docker容器连接实现步骤解析
  • 详解docker nginx 容器启动挂载到本地
  • 详解docker的持久化存储和数据共享
  • 详解mac下通过docker搭建lemp环境
  • docker创建mysql容器的方法
  • docker端口映射实现网络访问的方法
  • 解决docker容器时区及时间不同步问题的方法
  • linux中无make命令的问题(make: *** 没有指明目标并且找不到 mak
  • 如何使用docker搭建开发环境
  • 如何用docker快速搭建开发环境
  • 如何运用docker配合python开发环境实例
  • 怎么使用Docker搭建PHP开发环境
  • 怎么利用docker搭建一个预发布环境
  • 如何构建基于docker的开发环境
  • 可以在docker里搭建可视化开发环境吗?
  • 大家都在怎么使用 docker
  • 如何搭建Docker标准化开发测试和生产环境
  • 使用docker作为开发环境还需要写java代码吗
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全dockerhyper-vvmwarevirtualboxxenserverkvmqemuopenvzxencloudstackopenstack云计算技术云其它首页服务器云和虚拟化使用docker快速搭建oracle开发环境的方法教程详解mac osx docker开发环境搭建ubuntu 搭建基于docker的lnmp+redis的开发环境(图文)搭建基于docker的php开发环境的详细教程将spring boot应用打入docker中运行的实现方法docker容器化spring boot应用详解docker容器连接实现步骤解析详解docker nginx 容器启动挂载到本地详解docker的持久化存储和数据共享详解mac下通过docker搭建lemp环境docker创建mysql容器的方法docker端口映射实现网络访问的方法解决docker容器时区及时间不同步问题的方法linux中无make命令的问题(make: *** 没有指明目标并且找不到 makdocker 给运行中的容器设置端口映docker获取镜像报错docker: errodocker 清理命令集锦docker.service启动失败:unit nubuntu14.04+docker的安装及使用docker容器如何优雅的终止详解浅谈docker-compose网络设置之necentos7 安装docker 解决启动不了docker容器访问宿主机网络的方法详解docker国内镜像拉取和镜像加docker中使用mysql数据库实现局域网访问docker利用busybox创建基础镜像(base ima详解docker的持久化存储和数据共享docker完整配置nginx+php+mysql的方法步骤使用docker创建静态网站应用(多种方式)linux中无make命令的问题(make: *** 没有centos6使用docker部署kafka项目的方法分使用docker多阶段构建来减小镜像大小的方详解基于docker搭建lanproxy内网穿透服务阿里云docker容器固定应用到到某一个节点
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved