-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathDockerfile
More file actions
114 lines (95 loc) · 3.61 KB
/
Copy pathDockerfile
File metadata and controls
114 lines (95 loc) · 3.61 KB
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
ARG OPENVDS_IMAGE=openvds
ARG ONESEISMIC_BASEIMAGE=docker.io/library/golang:1.26-alpine@sha256:0178a641fbb4858c5f1b48e34bdaabe0350a330a1b1149aabd498d0699ff5fb2
FROM ${ONESEISMIC_BASEIMAGE} AS openvds
RUN apk --no-cache add \
git \
g++ \
gcc \
make \
cmake \
boost-dev \
util-linux-dev \
perl \
libuv-dev \
zlib-dev \
openssl-dev
ARG OPENVDS_VERSION=3.4.5
WORKDIR /
RUN git clone --depth 1 --branch ${OPENVDS_VERSION} https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/seismic/open-vds.git
WORKDIR /open-vds
# https://community.opengroup.org/osdu/platform/domain-data-mgmt-services/seismic/open-vds/-/commit/8d7cb05e2a3dd6f8737c7bb474f7f7d251f2f259
ARG CMAKE_POLICY_VERSION_MINIMUM=3.5
# for performance reasons open-vds should be build and run with new openssl
# libssl is installed on alpine by default and would be used during runtime
# it is unclear if curl version makes a difference and which one is better
ARG BUILD_TYPE=Release
RUN cmake -S . \
-B build \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DBUILD_JAVA=OFF \
-DBUILD_PYTHON=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_DOCS=OFF \
-DDISABLE_STRICT_WARNINGS=OFF \
-DDISABLE_AZURESDKFORCPP_IOMANAGER=OFF \
-DDISABLE_AWS_IOMANAGER=ON \
-DDISABLE_GCP_IOMANAGER=ON \
-DDISABLE_DMS_IOMANAGER=ON \
-DDISABLE_AZURE_PRESIGNED_IOMANAGER=ON \
-DDISABLE_CURL_IOMANAGER=ON \
-DBUILD_UV=OFF \
-DBUILD_ZLIB=OFF \
-DBUILD_OPENSSL=OFF \
-DBUILD_CURL=ON
RUN cmake --build build --config ${BUILD_TYPE} --target install -j 8 --verbose
FROM $OPENVDS_IMAGE AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download && go mod verify
COPY . .
ARG CGO_CPPFLAGS="-I/open-vds/Dist/OpenVDS/include"
ARG CGO_LDFLAGS="-L/open-vds/Dist/OpenVDS/lib"
RUN go build -a ./...
RUN GOBIN=/tools go install github.com/swaggo/swag/cmd/swag@v1.16.3
RUN /tools/swag init --dir cmd/query,api/handlers,api/middleware,internal/core -g main.go --md docs
FROM builder AS tester
ARG CGO_CPPFLAGS="-I/open-vds/Dist/OpenVDS/include"
ARG CGO_LDFLAGS="-L/open-vds/Dist/OpenVDS/lib"
ARG LD_LIBRARY_PATH=/open-vds/Dist/OpenVDS/lib:$LD_LIBRARY_PATH
ENV CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/open-vds/Dist/OpenVDS
RUN cmake -S . -B build
RUN cmake --build build
RUN ctest --test-dir build
ARG OPENVDS_AZURESDKFORCPP=1
RUN go test -race ./...
FROM builder AS static_analyzer
ARG CGO_CPPFLAGS="-I/open-vds/Dist/OpenVDS/include"
ARG CGO_LDFLAGS="-L/open-vds/Dist/OpenVDS/lib"
ARG STATICCHECK_VERSION="2026.1"
ARG LD_LIBRARY_PATH=/open-vds/Dist/OpenVDS/lib:$LD_LIBRARY_PATH
RUN apk --no-cache add curl
RUN curl \
-L https://github.com/dominikh/go-tools/releases/download/${STATICCHECK_VERSION}/staticcheck_linux_amd64.tar.gz \
-o staticcheck-${STATICCHECK_VERSION}.tar.gz
RUN ls && tar xf staticcheck-${STATICCHECK_VERSION}.tar.gz
RUN ./staticcheck/staticcheck ./...
FROM builder AS installer
ARG CGO_CPPFLAGS="-I/open-vds/Dist/OpenVDS/include"
ARG CGO_LDFLAGS="-L/open-vds/Dist/OpenVDS/lib"
ARG LD_LIBRARY_PATH=/open-vds/Dist/OpenVDS/lib:$LD_LIBRARY_PATH
RUN GOBIN=/server go install -a ./...
FROM ${ONESEISMIC_BASEIMAGE} AS runner
RUN apk --no-cache add \
jemalloc-dev
WORKDIR /server
COPY --from=installer /open-vds/Dist/OpenVDS/lib/* /open-vds/
COPY --from=installer /server /server
COPY --from=installer /src/docs/index.html /server/docs/
RUN addgroup -S -g 1001 radix-non-root-group
RUN adduser -S -u 1001 -G radix-non-root-group radix-non-root-user
USER 1001
ENV LD_LIBRARY_PATH=/open-vds:$LD_LIBRARY_PATH
ENV OPENVDS_AZURESDKFORCPP=1
ENV LD_PRELOAD=/usr/lib/libjemalloc.so
ENTRYPOINT [ "/server/query" ]