Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,可以方便地将多个容器组合在一起,共同完成一个应用程序的部署。在开发 Web 应用时,我们经常需要使用数据库来存储数据,并且希望数据库能够很方便地与应用程序共享状态。在本文中,我们将介绍如何使用 Docker Compose 来配置多个容器共享 PostgreSQL 数据库。
准备工作
首先,需要安装最新版本的 Docker 和 Docker Compose。这两个软件可以在 macOS、Linux 和 Windows 上运行,并且可以通过官方网站下载和安装。
# 安装 Docker curl -sSL https://get.docker.com/ | sh # 安装 Docker Compose sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
配置 PostgreSQL 容器
要使用 Docker Compose 来配置 PostgreSQL 容器,我们需要编写一个 YAML 文件,该文件描述了我们要创建的容器,以及它们之间的关系和依赖关系。
-- -------------------- ---- ------- -------- --- --------- --- ------ -------- -------- - -------------------------------- ------------ -------------- ---- ------------------ -------- ------------ -------- ------ - ----------- --------- - ----------- -------- -------- --------- ------------
在这个 YAML 文件中,我们定义了一个名为 db
的 PostgreSQL 容器。该容器基于官方的 postgres
镜像构建,指定了数据库的用户名、密码和数据库名称。我们还指定了一个 db-data
卷来存储数据库数据。在 ports
部分,我们将容器的端口映射到主机上的端口 5432
,这样我们就可以使用 PostgreSQL 客户端连接到容器中的数据库了。最后,我们定义了一个名为 app-network
的网络,使得我们的容器可以彼此通信。
配置应用程序容器
接下来,我们将创建一个应用程序容器,该容器将连接到我们刚刚创建的 PostgreSQL 容器,并使用该容器中存储的数据。
-- -------------------- ---- ------- -------- --- --------- --- ------ -------- -------- - -------------------------------- ------------ -------------- ---- ------------------ -------- ------------ -------- ------ - ----------- --------- - ----------- ---- ------ - -------- - ------ ------ - ----------- ------------ ------------- ----------------------------------------- ----------- - -- --------- - ----------- -------- -------- --------- ------------
在这个 YAML 文件中,我们定义了两个容器:一个是先前创建的 db
容器,另一个是新的 app
容器,该容器将托管我们的 Web 应用程序。我们使用 build
指令将 Dockerfile
路径作为参数,以为应用程序创建一个 Docker 镜像。在 volumes
部分,我们将应用程序的代码目录挂载到容器中,这样我们就可以在容器中运行应用程序了。在 ports
部分,我们将容器的端口映射到主机上的端口 8080
,这样我们就可以在浏览器中打开应用程序了。在 environment
部分,我们指定了连接到 PostgreSQL 数据库所需的数据库 URL。在 depends_on
部分,我们指定了 app
容器需要先启动 db
容器。
运行 Docker Compose
在编写完 YAML 文件并将其保存到名为 docker-compose.yml
的文件中后,我们可以使用以下命令启动 Docker Compose:
docker-compose up
这将会启动我们在 YAML 文件中定义的所有容器,并将它们连接在一起。现在,我们可以访问 http://localhost:8080
来查看我们的应用程序是否正在运行,并使用 psql
命令连接到 PostgreSQL 数据库。
psql -h localhost -p 5432 -U user database
总结
在本文中,我们介绍了如何使用 Docker Compose 来配置多个容器共享 PostgreSQL 数据库。我们通过编写一个 YAML 文件来定义我们的容器,以及它们之间的关系和依赖关系。然后,我们使用 docker-compose up
命令和我们的 YAML 文件来启动和连接所有容器。使用 Docker Compose,我们可以轻松地构建和部署复杂的 Web 应用程序,并确保它们之间的状态始终保持同步。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646da550968c7c53b0c49d2a