我有一个连接到 Oracle 自治数据仓库的 dotnet 核心项目。通过 Visual Studio 运行项目可以完美运行。我想将项目容器化,但每当我运行容器时,它都无法连接到 ADW,失败并显示“TNS:无法解析连接标识符”
这是我的 Dockerfile:
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY backend.csproj .
RUN dotnet restore
COPY . .
RUN dotnet publish -c release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80
EXPOSE 443
EXPOSE 1522
COPY --from=build /app .
ENTRYPOINT ["dotnet", "backend.dll"]
在我的项目中,我创建了一个名为“tns”的顶级文件夹。在那里,我拥有来自 ADW 的钱包文件中的所有内容。我已将 sqlnet.ora 文件修改为如下所示:
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="tns")))
这是我的撰写文件:
version: '3.4'
services:
frontend:
image: pizzafrontend
build:
context: frontend
dockerfile: Dockerfile
environment:
- backendUrl=http://backend
ports:
- "5902:80"
depends_on:
- backend
backend:
image: pizzabackend
build:
context: backend
dockerfile: Dockerfile
ports:
- "5900:80"
- "1522:1522"
我尝试添加环境变量 TNS_ADMIN="tns" 或 TNS_ADMIN="src/tns",但两者都没有任何区别。我对此束手无策,我觉得我非常接近答案,所以欢迎任何帮助。