-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile
42 lines (40 loc) · 2.75 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# escape=`
# Oracle instand client and ODBC driver x64: https://www.oracle.com/technetwork/topics/winx64soft-089540.html
# vc_redist_2013_x64 dependency: http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x64.exe
# Oracle instand client and ODBC driver x86: https://www.oracle.com/technetwork/topics/winsoft-085727.html
# vc_redist_2013_x86 dependency: http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe
FROM microsoft/dotnet-framework:4.7.2-runtime-windowsservercore-ltsc2016
SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
ARG INSTANTCLIENT_ZIP="instantclient-basiclite-nt-12.2.0.1.0.zip"
ARG ODBC_ZIP="instantclient-odbc-nt-12.2.0.1.0-2.zip"
ARG ODBC_PASSWORD
ARG ODBC_DRIVER="Oracle in instantclient_12_2"
LABEL com.contoso.name="odbc32-base:dotnet-4.7.2-runtime-windowsservercore-2016" `
com.contoso.description=".NET Framework base image with ODBC 12.2 32-bit driver" `
com.contoso.docker.cmd.build="docker build --build-arg ODBC_PASSWORD='myStrongPass' --build-arg ODBC_ZIP='instantclient-odbc-nt-12.2.0.1.0-2.zip' -t odbc32-base:dotnet-4.7.2-runtime-windowsservercore-2016 -f Dockerfile ."
# Environment variables
ENV ORACLE_BASE="c:\oracle" `
ORACLE_HOME="c:\oracle" `
TNS_ADMIN="c:\oracle\network\admin"
# download and install vcredist dependency necessary for Oracle client
RUN mkdir \install; `
Invoke-WebRequest -UseBasicParsing `
-Uri 'http://download.microsoft.com/download/2/E/6/2E61CFA4-993B-4DD4-91DA-3737CD5CD6E3/vcredist_x86.exe' `
-OutFile \install\vcredist_x86.exe; `
Start-Process \install\vcredist_x86.exe -ArgumentList '/install /quiet' -NoNewWindow -Wait; `
Remove-Item -Force \install\vcredist_x86.exe;
# copy Oracle Instant Client and ODBC install zip
COPY ${ODBC_ZIP} ${INSTANTCLIENT_ZIP} \install\
# expand archives and install Oracle ODBC driver
RUN Expand-Archive -Path \install\$env:INSTANTCLIENT_ZIP -DestinationPath $env:ORACLE_BASE; `
Expand-Archive -Path \install\$env:ODBC_ZIP -DestinationPath $env:ORACLE_BASE; `
Push-Location $env:ORACLE_HOME; `
# using powershell x86 to install 32-bit ODBC driver
& "$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" `
-Command {Start-Process .\odbc_install.exe -WorkingDirectory $env:ORACLE_HOME -NoNewWindow -Wait} -NonInteractive -NoProfile; `
Pop-Location; `
Remove-Item -Recurse -Force -Path \install
# add ODBC DSN
RUN Add-OdbcDsn -Name testDsn -DriverName $env:ODBC_DRIVER `
-Platform 64-bit -DsnType System `
-SetPropertyValue @('Server=tstsrv','Database=mydb_dsn','Description=Test server ODBC connection','UserID=myuser',$ExecutionContext.InvokeCommand.ExpandString('Password=$env:ODBC_PASSWORD'));