docker

分类下相关文章

阿里云国内 ubuntu 服务器安装 docker

在我新购的阿里云国内服务器上部署一套环境,然后发现 docker 都安装不了。。。 系统版本 Ubuntu 22.04 无法访问 download.docker.com 如果按照 docker 官方的安装文档: https://docs.docker.com/engine/install/ubuntu/ 会卡在这里 $ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc curl: (35) OpenSSL SSL_connect: Connection res ...

阅读全文...

docker 容器内访问宿主机的端口号

使用场景 例如,我的 MySQL 数据库安装在了宿主机内,没有使用 docker。目的是: 为了方便多个服务使用数据库 服务器配置较低,也没有运行多个数据库的需求 但是,有个 PHP 的服务放在了 docker 内,所以需要 docker 容器内的 PHP 请求宿主机的 MySQL 有哪些解决方案 我大概看了一下网上的方案,大概有这么几个方案 通过 docker0 的 IP 地址访问 将容器的网络类型改成 host 类型。即,与宿主机共用网络 通过 host.docker.internal 这种修改 hosts 文件的方式 我倾向于第二种解决方案,即容器与宿主机共用一个网络的方案。 d ...

阅读全文...

终于成功了,生产服务器 docker 部署 golang 服务

摸索了半天,终于在十一长假之前把线上服务器 docker 部署 golang 服务搞定了。 ❓ 为何要用 docker 部署 golang 服务 因为 golang 以部署便捷著称,编译之后只有一个二进制可执行文件,扔到服务器上就能跑。不需要多余的操作。 而不像 .NET 的 AOT,还需要编译环境跟部署环境系统版本号一致。连交叉编译都不支持。 这么看,完全没有必要使用 docker。 但是,由于生产环境之前为了部署多版本的 PHP,把 MySQL 等服务都放到了 Docker 中。 于是要让 golang 服务器能正常访问 MySQL,也得把 golang 服务部署到跟 MySQL 相同的 ...

阅读全文...

关于 docker alpine 镜像

alpine 这个单词真的很难记住,每次都记不住。 单独的“alpine”可以翻译为“高山的;阿尔卑斯山的;阿尔卑斯山区居民的”等,也可直接翻译为“阿尔卑斯山”或“高山”。其官网首页也确实是一张雪山的照片,是不是阿尔卑斯山就不知道了。发音是,阿尔派恩😊 docker alpine 镜像有多小 > docker.exe images REPOSITORY TAG IMAGE ID CREATED SIZE test la ...

阅读全文...

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 ...

阅读全文...