多个docker-compose项目之间通信与环境架构

在讲多个 docker-compose 项目之间通信之前,想要先说一说我从刚使用 Docker 到目前为止遇到的一些问题与想法。 在刚学习 Docker 的时候,我相信很多人都跟我一样有过这种想法:我们的代码运行环境、MySQL、Redis 等服务是放到一个容器里面呢,还是放到多个容器里面呢?经过一番学习知道,Docker 官方是推荐将这些环境放置到多个容器中的,至于为什么就不详细说了,可以自行百度学习一下。 容器通信 但是当放到多个容器中,又会出现一个问题,我的 API 服务该怎么访问 MySQL、Redis 呢?有三种办法可以解决。 通过容器内 ip + 映射出的端口进行访问(不推荐) 通过 --link 链接另一个容器访问(不推荐) --link 只能在 docker run 一个容器时链接另一个已运行的容器,所以说该方法只能单向访问。 通过 network 将两个容器链接到同一个 network 中可以进行双向访问 docker-compose 这么看来第三种方式是最好的解决方案,但是当我们容器越来越多时,需要记住所有容器的 run 指令,将一个个的容器 run 起来,然后链接到同一个 network 中去,操作起来非常的麻烦。所以我更推荐使用 docker-compose 来编排管理多个容器。下面来编写一个 docker-compose.yml 文件演示一下。 编写接口 因为我们只是来演示一下容器之间的通信,使用 MySQL、Nginx 等容器反而更加的麻烦,所以我们使用 Golang 简单写一个接口用来构建一个演示的镜像。 package main import ( "flag" "github.com/gin-gonic/gin" ) func main() { name := flag.String("name", "", "") flag.Parse() r := gin....

2022-06-25 · 2 分钟

自动部署

每次写一篇新的文章或者有一点改动,都要手动放到服务器上,特别麻烦,所以今天来搭建一个自动部署环境。每次修改之后只要 push 到 github 上就可以了。 我对 Docker 还是很喜欢的,所以这次环境也用 Docker 进行搭建。 安装 Docker 安装 Docker # 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 设置存储库 sudo yum install -y yum-utils sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo # 安装 Docker sudo yum install docker-ce docker-ce-cli containerd.io # 启动docker sudo systemctl start docker # 运行此命令以下载 Docker Compose 的当前稳定版本 sudo curl -L "https://github....

2021-12-18 · 3 分钟

使用docker-compose构建PHP8.0 + Swoole + Redis + MongoDB环境

最近公司考虑使用 PHP8 + swoole 进行项目的重构,所以要搭建一个环境进行开发学习。swoole 只能运行在 Linux 系统下,考虑到统一团队的开发环境,避免别的小伙伴在环境问题上浪费太多时间,所以选择使用 docker 来构建一个开发环境。 首先创建我们的工作目录Docker,然后在DockerHub上查找 PHP8.0 最新版本的镜像目前为PHP8.0.12,在Docker目录下创建php目录,因为以后可能会使用别的版本的 PHP,所以在php目录下在创建一个php8.0.12的目录,并在目录中创建Dockerfile文件。 目录结构为 Docker ├─ php │ ├─ php8.0.12 │ │ └─ Dockerfile │ ├─ ... 构建自己的 PHP 镜像 Dockerfile # 因为要使用swoole直接使用cli版本FROMphp:8.0.12-cli# 更新依赖RUN apt-get update \ && apt-get install -y \ unixodbc-dev \ zlib1g-dev \ libzip-dev# 创建`/usr/src/php/ext`目录RUN docker-php-source extract# 下载redis扩展# printf "" | 是为了跳过扩展安装过程中弹出让我们选择的yes noRUN printf "" | pecl install redis-5.3.4# 下载mongodb扩展RUN printf "" | pecl install mongodb-1....

2021-11-24 · 3 分钟