终于能用 Docker-compose 搭建一套自己的环境了
dnmp
怀着忐忑的心情上传了我的第一个github项目(https://github.com/MichealJl/dnmp)
刚接触Docker没多久,这个练手的 希望大家多多指教
在此之前先要了解docker一些基本用法 我学习docker的记录:jlmvp.cn/
首先确保你安装了docker和docker-compose以及git
目前只加了php5.6 和php7.2两个版本切换,如需扩展请自行照猫画虎
开始
1、将项目clone到本地
2、进入dnmp将env-example 重命名为.env
3、配置env中你所需要设置的环境变量
4、在docker-compose.yml目录 执行docker-compose config 你可以看到完整配置信息
5、执行docker-compose up -d (额。。安装php的那些扩展挺慢的 你可以酌情 修改php目录下的Dockerfile,等用的到那些扩展的时候 再装)**
安装成功之后显示如下
6、修改nginx的配置文件 nginx/conf.d/default.conf
查看 容器php名称
docker ps | grep php |awk $'{print $11}'
7、重启nginx服务
8、在你的项目目录下创建index.php 输出phpinfo();
结尾提示 如果你使用了mysql8.0以上版本会报如下错误
connect error:The server requested authentication method unknown to the client
解决方法 进入mysql容器登录mysql
执行
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
Gogs安装
执行docker-compose up -d
进入mysql容器创建Gogs数据库 CREATE DATABASE gogs CHARACTER SET utf8 COLLATE utf8_bin;
打开网页输入你的IP地址:你设置的Gogs端口号 进入安装安装向导页面
设置参数
本作品采用《CC 协议》,转载必须注明作者和本文链接
为内蒙古老乡点赞!! :+1:
@Insua 共勉
先赞再看 :grin:
刚好也在学 docker,感谢分享 :heart:
@FireRabbit 我也是初学docker者 😂 有问题 一起讨论
自己修改 laradock 会让你更快更强
@WensonSmith 嗯 那个我开始试过,但是自己体验一下也挺好
666,我也自己做了,不过楼主的更好,(laradock体质不够好)
@Aolinver :joy: 我也是 各种百度各种试
反手就是一个赞
@MR_NOBODY 反手回你个赞
networks是加入指定网络
@yangxiaopeipei 比如我这些镜像都加入了这同一个网络,具体有什么用或者帮助么
在同一network下的各个容器可以互相访问,Host是你的service名称。有networks了,其实links就没有必要了,需要互访的应用加到同一network即可,不同network相互隔离。不要把所有的service加入到同一个network下,你现在所有的service都能互访。
我自己其实服务器上也搭了dnmp,只有nginx,php和mysql,我是让nginx和php加入了名为nginx的network,php和mysql加入了名为mysql的network,这样来实现隔离。安全上我觉得还是有必要的。
我也是才开始用docker,别人写的总是不顺心,就自己折腾了,我自己用着感觉还不错。等我有空了也弄个repo,hhh。
另外,php和nginx推荐使用基于alpine的镜像,能有效减少镜像大小。nginx的alpine镜像已经默认支持tls1.3,改好配置文件就启用了。
@zvonimirsun 感谢讲解 下次试试
@zvonimirsun 刚才试了一下 果然可以 :joy: 在同一个网络不需要link 我就当用link起了个别名吧。。。
@j475523225 赞一个!用你的项目搭建了起来,但是发现gd库好像有问题 .具体情况是:mews/captcha 验证码扩展包使用报错 Call to undefined function Intervention\Image\Gd\imagettfbbox() 查了下应该是gd未安装freetype . 作了如下改动

还是报相同的错误 大佬能更新下不 感谢
@alaraveler
..谢谢提醒 这个我还没遇到过。。。
也是一顿百度 这是查到的并且试过了(https://www.liangzl.com/get-article-detail...)
安装结果
你安装完重启下php的容器
狠强势
@j475523225 感谢讲解 已经可以了 :+1:
@j475523225 再请教下使用docker部署laravel laravel的配置文件 REDIS_HOST該填什么 直接填 docker-compose.yml 文件中配置的 links值 比如REDIS_HOST=redis 会报错
Predis\Connection\ConnectionException : php_network_getaddresses: getaddrinfo failed: Name or service not known [tcp://redis:6379]
这是我的redis配置 mysql也会遇到想通问题 应该是没有解析为对应ip 我用docker inspect 获取ip 替换后是可以运行的
以下是我的redis配置
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
@alaraveler 你用这个查一下redis容器的名称 docker ps | grep redis |awk $'{print $11}' 把配置换成查出来的这个 试试
@alaraveler 这个我真不知道 不过后来听了他的 我把link去掉了 发现 填写服务名称就能互相连接, 还没试过localhost 找时间试试
用localhost 不行 刚才理解错了 :joy:
@alaraveler 错几次 就知道怎么回事了 :joy:
- ${MYSQL_DATA_PATH}:/data
这一行应该改为:- ${MYSQL_DATA_PATH}:/var/lib/mysql
,因为容器中mysql的数据保存在这个目录。不然宿主机没法同步到里面的数据。膜拜大佬
Laravel项目需要运行npm install,是用本地的npm吗