This is an automated email from the ASF dual-hosted git repository.

doleyzi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new cd3d44a557 [INLONG-12014][SDK] Add C++ Dataproxy SDK compile 
Dockerfile (#12015)
cd3d44a557 is described below

commit cd3d44a5570fc4ff1121b2d7d6f65103699de00e
Author: yfsn666 <[email protected]>
AuthorDate: Tue Oct 14 11:06:39 2025 +0800

    [INLONG-12014][SDK] Add C++ Dataproxy SDK compile Dockerfile (#12015)
---
 .../dataproxy-sdk-cpp/README.md                    |  41 +++++++-
 .../dataproxy-sdk-cpp/docker/Dockerfile            | 110 +++++++++++++++++++++
 .../dataproxy-sdk-cpp/docker/README-Docker.md      |  55 +++++++++++
 .../dataproxy-sdk-cpp/docker/build_docker.sh       |  44 +++++++++
 4 files changed, 247 insertions(+), 3 deletions(-)

diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md 
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
index fb50cbadf9..0cc36398c2 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/README.md
@@ -34,14 +34,49 @@ dataproxy-sdk cpp version, used for sending data to 
dataproxy
 
 ## Build
 
-Go to the dataproxy-sdk-cpp root, and run
+There are two ways to build dataproxy-sdk-cpp:
 
-```
-./build_third_party.sh
+### Method 1: Native Build
+
+Go to the `dataproxy-sdk-cpp` directory, and run:
 
+```bash
+./build_third_party.sh
 ./build.sh
 ```
 
+### Method 2: Docker Build
+
+**Prerequisites for Docker build:**
+- Docker installed on your system
+
+This method uses a pre-configured Docker environment with all necessary 
dependencies.
+
+Go to the `dataproxy-sdk-cpp` directory, and run:
+
+1. Build the Docker image:
+```bash
+docker build -f docker/Dockerfile -t inlong/dataproxy-cpp-compile .
+```
+
+2. Run the build:
+```bash
+docker run -v $(pwd):/dataproxy-sdk-cpp inlong/dataproxy-cpp-compile
+```
+
+Alternatively, you can navigate to the docker directory and build from there:
+
+```bash
+cd docker
+docker build -t inlong/dataproxy-cpp-compile .
+cd ..
+docker run -v $(pwd):/dataproxy-sdk-cpp inlong/dataproxy-cpp-compile
+```
+
+Build artifacts will be available in the `build/` and `release/` 
subdirectories.
+
+For more details about Docker build, see 
[docker/README-Docker.md](docker/README-Docker.md).
+
 ## Config Parameters
 
 Refer to `release/conf/config_example.json`.
diff --git a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/Dockerfile 
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/Dockerfile
new file mode 100644
index 0000000000..db2f810617
--- /dev/null
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/Dockerfile
@@ -0,0 +1,110 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Use CentOS 7 as base image
+FROM centos:7
+
+# Set working directory
+WORKDIR /dataproxy-sdk-cpp/
+
+## Switch to Tencent mirror to fix CentOS 7 yum source issues
+RUN sed -e 's|^mirrorlist=|#mirrorlist=|g' \
+       -e 
's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tencent.com|g' \
+       -i.bak /etc/yum.repos.d/CentOS-*.repo && \
+   yum clean all && \
+   yum makecache
+
+# Install necessary dependency packages
+RUN yum update -y && \
+    yum install -y \
+        gcc \
+        gcc-c++ \
+        make \
+        autoconf \
+        automake \
+        libtool \
+        pkgconfig \
+        wget \
+        openssl-devel \
+        zlib-devel \
+    && yum clean all && rm -rf /var/cache/yum
+
+# Build and install SSL-enabled curl (used by Git and CMake)
+ARG CURL_VERSION=7.78.0
+RUN cd /tmp && \
+    wget https://curl.se/download/curl-${CURL_VERSION}.tar.gz && \
+    tar -xzf curl-${CURL_VERSION}.tar.gz && \
+    cd curl-${CURL_VERSION} && \
+    ./configure --prefix=/usr/local --with-ssl --with-zlib && \
+    make -j"$(nproc)" && \
+    make install && \
+    ln -sf /usr/local/bin/curl /usr/bin/curl && \
+    echo "/usr/local/lib" > /etc/ld.so.conf.d/usr-local.conf && ldconfig && \
+    cd / && rm -rf /tmp/curl-*
+
+# Verify curl SSL support
+RUN curl --version
+
+# Build and install Git (compile from source with CURL support)
+ARG GIT_VERSION=2.34.1
+RUN cd /tmp && \
+    wget https://github.com/git/git/archive/v${GIT_VERSION}.tar.gz && \
+    tar -xzf v${GIT_VERSION}.tar.gz && \
+    cd git-${GIT_VERSION} && \
+    make configure && \
+    ./configure --prefix=/usr/local --with-curl=/usr/local && \
+    make -j"$(nproc)" \
+        NO_GETTEXT=YesPlease \
+        NO_EXPAT=YesPlease \
+        NO_PERL=YesPlease \
+        NO_TCLTK=YesPlease && \
+    make install \
+        NO_GETTEXT=YesPlease \
+        NO_EXPAT=YesPlease \
+        NO_PERL=YesPlease \
+        NO_TCLTK=YesPlease && \
+    ln -sf /usr/local/bin/git /usr/bin/git && \
+    cd / && rm -rf /tmp/git-* /tmp/v${GIT_VERSION}.tar.gz
+
+# Verify gcc and git versions
+RUN gcc --version && git --version
+
+# Build and install CMake using system curl
+ARG CMAKE_VERSION=3.12.4
+RUN cd /tmp && \
+    wget https://cmake.org/files/v3.12/cmake-${CMAKE_VERSION}.tar.gz && \
+    tar -xzf cmake-${CMAKE_VERSION}.tar.gz && \
+    cd cmake-${CMAKE_VERSION} && \
+    ./configure --prefix=/usr/local --system-curl && \
+    make -j"$(nproc)" && \
+    make install && \
+    ln -sf /usr/local/bin/cmake /usr/bin/cmake && \
+    ln -sf /usr/local/bin/ctest /usr/bin/ctest && \
+    ln -sf /usr/local/bin/cpack /usr/bin/cpack && \
+    cd / && rm -rf /tmp/cmake-*
+
+# Verify CMake version
+RUN cmake --version
+
+# Copy and setup build script from docker directory
+COPY build_docker.sh /usr/local/bin/build_docker.sh
+RUN chmod +x /usr/local/bin/build_docker.sh
+
+# Set entrypoint to build script
+ENTRYPOINT ["/usr/local/bin/build_docker.sh"]
\ No newline at end of file
diff --git 
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/README-Docker.md 
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/README-Docker.md
new file mode 100644
index 0000000000..ee5a1a8a80
--- /dev/null
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/README-Docker.md
@@ -0,0 +1,55 @@
+# DataProxy SDK C++ Docker Compile Environment
+
+Docker image providing GCC, CMake, and Git environment for compiling C++ 
dataproxy SDK.
+
+## Environment
+
+- **OS**: CentOS 7
+- **GCC**: System default (4.8.5)
+- **CMake**: 3.12.4
+- **Git**: 2.34.1
+- **Curl**: 7.78.0
+- **Tools**: gcc, gcc-c++, make, autoconf, automake, libtool, pkgconfig, 
openssl-devel, zlib-devel
+
+## Build Docker Image
+
+Navigate to the `dataproxy-sdk-cpp/docker` directory and build the image:
+
+```bash
+cd docker
+docker build -t inlong/dataproxy-cpp-compile .
+```
+
+## Usage
+
+### Basic Usage
+
+Run from the `dataproxy-sdk-cpp` directory:
+
+```bash
+docker run -v $(pwd):/dataproxy-sdk-cpp inlong/dataproxy-cpp-compile
+```
+
+### Example
+
+```bash
+# Navigate to the dataproxy-sdk-cpp directory
+cd /path/to/inlong/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp
+
+# Run the build
+docker run -v $(pwd):/dataproxy-sdk-cpp inlong/dataproxy-cpp-compile
+```
+
+### Alternative Usage
+
+You can also run from any directory by specifying the full path:
+
+```bash
+docker run -v /path/to/dataproxy-sdk-cpp:/dataproxy-sdk-cpp 
inlong/dataproxy-cpp-compile
+```
+
+## Output
+
+Build artifacts will be available in the following directories of your source 
code:
+- `build/` - CMake build directory with object files and intermediate artifacts
+- `release/` - Final release artifacts and libraries
\ No newline at end of file
diff --git 
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/build_docker.sh 
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/build_docker.sh
new file mode 100755
index 0000000000..c30237392c
--- /dev/null
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/docker/build_docker.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+set -e
+
+# Check if required files exist
+if [ ! -f "build_third_party.sh" ]; then
+    echo "Error: build_third_party.sh not found in current directory"
+    echo "Please make sure you have mounted the source code directory 
correctly"
+    echo "Expected mount: -v /path/to/dataproxy-sdk-cpp:/dataproxy-sdk-cpp"
+    exit 1
+fi
+
+if [ ! -f "build.sh" ]; then
+    echo "Error: build.sh not found in current directory"
+    echo "Please make sure you have mounted the source code directory 
correctly"
+    echo "Expected mount: -v /path/to/dataproxy-sdk-cpp:/dataproxy-sdk-cpp"
+    exit 1
+fi
+
+echo "=== Building third party dependencies ==="
+./build_third_party.sh
+
+echo "=== Building dataproxy-sdk-cpp ==="
+./build.sh
+
+echo "=== Build completed successfully ==="
\ No newline at end of file

Reply via email to