终于能用 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 你可以看到完整配置信息

Image text

5、执行docker-compose up -d (额。。安装php的那些扩展挺慢的 你可以酌情 修改php目录下的Dockerfile,等用的到那些扩展的时候 再装)**

Image text

安装成功之后显示如下
Image text

6、修改nginx的配置文件 nginx/conf.d/default.conf

Image text

查看 容器php名称

docker ps | grep php |awk $'{print $11}'

7、重启nginx服务

8、在你的项目目录下创建index.php 输出phpinfo();

Image text

结尾提示 如果你使用了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端口号 进入安装安装向导页面

设置参数

Image text

Image text

Image text

本作品采用《CC 协议》,转载必须注明作者和本文链接
本帖由系统于 6年前 自动加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 30

为内蒙古老乡点赞!! :+1:

7年前 评论

先赞再看 :grin:

刚好也在学 docker,感谢分享 :heart:

7年前 评论

@FireRabbit 我也是初学docker者 😂 有问题 一起讨论

7年前 评论

自己修改 laradock 会让你更快更强

7年前 评论

@WensonSmith 嗯 那个我开始试过,但是自己体验一下也挺好

7年前 评论

666,我也自己做了,不过楼主的更好,(laradock体质不够好)

7年前 评论

@Aolinver :joy: 我也是 各种百度各种试

7年前 评论

反手就是一个赞

7年前 评论

@MR_NOBODY 反手回你个赞

7年前 评论

networks是加入指定网络

7年前 评论

@yangxiaopeipei 比如我这些镜像都加入了这同一个网络,具体有什么用或者帮助么

7年前 评论

在同一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,改好配置文件就启用了。

7年前 评论

@zvonimirsun 感谢讲解 下次试试

7年前 评论

@zvonimirsun 刚才试了一下 果然可以 :joy: 在同一个网络不需要link 我就当用link起了个别名吧。。。

7年前 评论

@j475523225 赞一个!用你的项目搭建了起来,但是发现gd库好像有问题 .具体情况是:mews/captcha 验证码扩展包使用报错 Call to undefined function Intervention\Image\Gd\imagettfbbox() 查了下应该是gd未安装freetype . 作了如下改动
file
还是报相同的错误 大佬能更新下不 感谢

7年前 评论

@alaraveler

file

..谢谢提醒 这个我还没遇到过。。。
也是一顿百度 这是查到的并且试过了(https://www.liangzl.com/get-article-detail...)

安装结果

你安装完重启下php的容器

7年前 评论

狠强势

7年前 评论

@j475523225 感谢讲解 已经可以了 :+1:

7年前 评论

@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

6年前 评论

@alaraveler 你用这个查一下redis容器的名称 docker ps | grep redis |awk $'{print $11}' 把配置换成查出来的这个 试试

6年前 评论

@alaraveler 这个我真不知道 不过后来听了他的 我把link去掉了 发现 填写服务名称就能互相连接, 还没试过localhost 找时间试试

6年前 评论

用localhost 不行 刚才理解错了 :joy:

6年前 评论

@alaraveler 错几次 就知道怎么回事了 :joy:

6年前 评论

- ${MYSQL_DATA_PATH}:/data 这一行应该改为:- ${MYSQL_DATA_PATH}:/var/lib/mysql,因为容器中mysql的数据保存在这个目录。不然宿主机没法同步到里面的数据。

6年前 评论
j475523225 (楼主) 6年前

Laravel项目需要运行npm install,是用本地的npm吗

2年前 评论
j475523225 (楼主) 2年前
manbofish (作者) 2年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!