linux重装系统重装软件方案part4 - 全部docker
全部带版本号,以便日后恢复
Table of Contents
创建公共公共 Docker 网络
两个容器通过 容器名 通信,而不是通过 IP 地址,需要手动创建一个公共 Docker 网络。
docker network create custom_network
Note
1.Docker 网络在单个宿主机范围内是全局的,不管是 root 创建的,还是普通用户通过 sudo 创建的,最终都是在请求 root 权限的 Docker 服务来创建网络
2.如果你是一个普通用户,且没有经过特殊配置,你必须使用 sudo。此时,这个网络是由 Docker 守护进程(以 root 身份运行)创建并管理的。
sudo docker network create custom_network
3.普通用户已加入 docker 用户组
docker network create custom_network
挂载文件夹权限
挂载文件夹(存放 PostgreSQL 和 nopCommerce 数据的地方)一定要注意:
如果你用 sudo mkdir 创建了文件夹,文件夹的拥有者是 root。 而 Docker 里的 postgres 程序通常以 UID 999 运行,它可能没权限往 root 的文件夹里写数据。
最佳操作流程:
普通用户创建文件夹:mkdir -p ~/postgres_data
普通用户(带 sudo 或加了组)创建网络:docker network create custom_network
普通用户(带 sudo 或加了组)启动容器。
数据库配置
services:
nopcommerce_database:
image: "postgres:latest"
container_name: nopcommerce_postgres_server
environment:
POSTGRES_PASSWORD: "nopCommerce_db_password"
networks:
- nop_network
volumes:
- nopcommerce_data:/var/lib/postgresql/data
volumes:
nopcommerce_data:
networks:
nop_network:
external: true
services:
nopcommerce_web:
build: .
container_name: nopcommerce
ports:
- "80:80"
networks:
- nop_network
# 此时 Web 依然可以通过 nopcommerce_postgres_server 访问数据库
networks:
nop_network:
external: trueNote
连接字符串:在 nopCommerce 首次启动的安装界面(Install page)中,你需要手动输入数据库信息:
Database server: 输入数据库容器的名字(方案二)或 宿主机IP(方案一)。
数据库连接:在 nopCommerce 安装界面,"Database server" 填入宿主机的真实 IP 地址(不要填 localhost,因为 Web 容器里的 localhost 是它自己)。
SQL Password: nopCommerce_db_password。
