docker

分类下相关文章

docker 默认不支持 crontab 计划任务,导致 Magento 批量上传产品后无法被搜索到

又一次被 docker 坑到。 问题现象 在 Magento 中批量上传产品信息后,新增的商品信息无法通过 Magento 的搜索功能被检索到。 猜测是批量上传功能,没有自动触发 ES 全文检索的索引功能。 手动解决方案 执行: > bin/magento cron:run Ran jobs by schedule. 然后,产品信息就能被搜索到了。 但是,这样操作太麻烦,总不能每次在浏览器后台上传成功之后,都去服务器上再敲一段命令行吧。 尝试通过服务器端的系统计划任务实现。 docker 中 magento 自动创建的计划任务失效 执行 magento 命令,创建计划任务: > ...

阅读全文...

Joomla & Helix 无法上传图片的问题排查

问题现象 在 Joomla 后台编辑一篇文章,上传 Helix3 Blog Options 选项卡中的 Featured Image 时,总是显示图片裂开, 及上传图片失败。 确认上传图片接口是否报错 从浏览器的开发者工具中,网络请求列表看,上传接口是返回正常 200 状态码。 返回的 json 数据结构也显示正常。但就是看不到图片。 到服务器上确认权限问题 切换为 www-data 用户 sudo su -l www-data -s /bin/bash 然后在 images 目录下尝试新建一个文件,确实可以成功创建,说明不是目录权限问题。 原来是 php 配置的问题 绝望了,最后还是 Go ...

阅读全文...

基于 docker compose 部署 Joomla 新站的流程

新增 docker 容器挂载目录 在开发机上编辑 docker-compose.yml 配置文件,新增需要挂载的目录。然后提交保存。 将配置文件更新到服务器上。重启 docker fpm 容器,使挂载目录生效。 docker compose stop phpfpm82 docker compose up -d phpfpm82 确认目录已存在 docker 比较贴心的一点是,设置的挂载目录,如果不存在,会自动创建这些目录。而不需要手动去逐一创建。如果不放心,可以手动验证一下: docker compose exec phpfpm82 /bin/bash ls xxx 修改目录权限 因为 U ...

阅读全文...

docker 误朕,Joomla 发送邮件超时失败,原因竟是 docker 默认不支持 IPv6

前几天迁移 Joomla 服务器到半夜 11 点多,最后发现发送邮件失败,总是报超时。太困实在扛不住了,而且第二天要上线公司内部的 CRM 微信小程序,老板要体验,不敢怠慢,于是决定速速睡觉,缓缓再排查邮件发送失败的问题。今天,CRM 小程序终于上线了,赶紧定位了一下邮件问题。 Joomla 是何物 Joomla 是一个开源的内容管理系统(CMS),用于构建网站和在线应用程序。 适用于构建各种类型的网站,包括企业网站、电子商务平台、小型企业网站、社区门户网站、学校网站,以及个人主页。类似于 Wordpress,也是由世界上最好的语言 PHP 开发。 问题现象 提交数据后,默认会将提交信息发送 ...

阅读全文...

nginx & docker fpm, No input file specified.

背景 Nginx 安装在宿主机。因为我觉得多个项目都需要用到 Nginx 中,放到 docker 中没有意义。 php fpm 安装在 docker 镜像中。php 项目,使用 docker 中的 composer 安装,所以安装的 php 项目代码也在此容器中,只是映射到了宿主机的某个目录上。 通过域名访问,总是报错 No input file specified. 排查思路 造成这个提示的原因是什么,google 使用新的域名重新安装一次 新建一个只有简单逻辑的项目,打印 php info 信息看看,排除是 magento 配置的问题 直接使用 docker 内置的 fpm 配置 ...

阅读全文...

docker 删除容器和镜像

删除一个容器时,实际上是删除了容器的运行实例。与容器相关的文件系统、网络配置和进程都会被移除。但是,请注意,删除容器并不会自动删除任何关联的镜像。 查看所有容器 删除之前,查看一下所有的容器,包括已经退出的容器 docker ps -a 或者只列出当前 docker compose 配置文件对应的所有容器。注意,这个只能看到容器名,看不到容器 id。 docker compose ps -a 删除容器 docker rm 是删除容器,而 docker rmi 是删除镜像。 docker rm 一次可以指定多个容器。在执行 docker rm 删除容器时可以带上 -v 参数,docker 会 ...

阅读全文...

docker 存储目录规划

一个连人生都懒得规划的人,却要规划 docker 的存储目录。脑袋大 。。。 问题 我在使用 docker 时,依旧保持了直接使用宿主机的习惯,就是把项目代码都放到当前登录系统的账号的个人目录下,例如,/home/some_user/some_project/ 但是这样做会有很多问题: 其他登录用户不方便访问此目录。自己的服务器这样用没啥问题,但是一旦涉及跟其他人共用一台服务器,确实不太好。 一些需要用到 /var/www/html 目录的容器 (例如 php fpm 容器),不方便跟宿主机中安装的 Nginx 进行协作,造成宿主机 Nginx 转发给 fpm 容器的路径不一致,引起 404 ...

阅读全文...

动手实践是学习 docker 的最佳方式,docker 安装 php composer

对我来说,docker 还是有点复杂,可能是用的太少,或者使用的场景也偏简单,遇到复杂一点配置,就感觉心里没底。好在这两天通过看了几个 docker 官方镜像的使用文档,及 github 上的开源 docker composer 配置文件,有了一点感觉。 动手实践是理解 docker 的最佳方式,光看书是不行的,我在微信读书上翻了两本书,实在看不下去。讲的晦涩,例子也不实用,没有实践价值。公众号上好多 docker 的文章,也是人云亦云,看起来就跑不通的样子。远不如照着 github 上的开源 docker 配置在服务器上试试。(由于近期国内 docker 镜像站点纷纷被封,本机实践的难度骤升 ...

阅读全文...

docker compose 安装 MySQL 8.0

首先要安装 docker,参考 Ubuntu Server 24.04 LTS 安装 docker 然后创建一个新目录,在目录下新建一个 docker-compose.yaml 文件。 配置文件内容如下: docker-compose.yaml services: mysql: image: mysql:8.0 ports: - 3306:3306 volumes: - ~/apps/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=xxx - MY ...

阅读全文...

docker-compose.yaml 配置文件中的 version 字段

参考网上的配置,写了一段 MySQL 的 Docker Compose 配置 version: '3.9' services: mysql: image: mysql:8.0 ports: - 3306:3306 volumes: - ~/apps/mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=xxx 配置完成后,执行 docker compose up -d 把 MySQL 容器跑起来。 version is obsolete 在执行 docker ...

阅读全文...

Ubuntu Server 24.04 LTS 安装 docker

参考 docker 官方的安装文档: https://docs.docker.com/engine/install/ubuntu/ 查看版本 安装完成后,查看 docker 的版本: > docker --version Docker version 26.1.4, build 5650f9b ...

阅读全文...

系统重启时 docker 容器没有自启动问题排查

线上服务器环境,基于 docker 部署了一堆服务,虽然在 docker-compose.yml 中将各个服务配置了 restart: always 但是,实际测试发现,系统重启后,所有后期配置的 restart: always 的服务,都没有自启动。 只有一开始就设置了 restart: always 的服务,才自启动成功。 Google 搜索了一下,发现确实存在这个问题,对于这种容器,需要后期手动通过 docker 命令来更新配置,只修改 docker-compose.yml 是不够的。 检查指定容器当前配置的方法 docker inspect <your-container&gt ...

阅读全文...

docker Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

通过宿主机的 mysql client 连接 docker 容器中的 mysql server 时报错: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 解决方法 获取 mysql 容器名词: $ docker container ls 将获取到名词替换掉下方命令中的 container_name $ docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_na ...

阅读全文...

docker 容器的 timezone 时区设置

这里只列举目前用到的两种系统镜像 ubuntu 和 alpine 的时区配置方法。 宿主机为 Ubuntu。 ubuntu 镜像 这里以 rasa 的 ubuntu 镜像为例: timezone 和 localtime 文件映射一下宿主机的就可以了。 所以,前提是宿主机的配置是正确的。 action_server: image: rasa/rasa:3.4.6-full ports: - 5055:5055 environment: - ACTION_SERVER_SANIC_WORKERS=4 volumes: - ./:/app - /etc ...

阅读全文...

docker 迁移到另一块空间大的磁盘

在生产服务器中实际使用 docker 后发现,服务多了之后,非常占用磁盘。 本来以为只是一个测试用的服务,在逐步增加各种功能之后,多了诸多容器,导致系统盘空间所剩无几。 不得不将 docker 迁移到另一块空间大的硬盘上。 系统盘空间紧张 $ df -h Filesystem Size Used Avail Use% Mounted on /dev/root 29G 24G 5.3G 82% / /dev/sdc 63G 5.8G 54G 10% /www 迁移流程 停止 docker 服务 sudo systemctl stop d ...

阅读全文...