zoukankan      html  css  js  c++  java
  • pgspider 常用pg 扩展docker 镜像

    在实际的使用中我们可能不只是一个简单的pg 扩展,而是使用多种,所以基于现有的构建了一个
    支持mysql,mongo,sqlite,influxdb,griddb,sql server 的镜像(oracle 的后期尝试添加)

    Dockerfile

     
    FROM dalongrong/pgspider:base as build
    WORKDIR /app
    RUN apt-get update && apt-get install -y automake autoconf libtool pkg-config libssl-dev libmysql++-dev libsqlite3-dev libsybdb5 freetds-dev freetds-common
    RUN wget https://dl.google.com/go/go1.13.3.linux-amd64.tar.gz && tar zxvf go1.13.3.linux-amd64.tar.gz
    ENV PATH $PATH:/app/go/bin
    ENV GOPATH /opt/go
    RUN go get github.com/influxdata/influxdb1-client/v2
    RUN git clone --recursive https://github.com/pgspider/griddb_fdw.git /app/postgresql-11.6/contrib/griddb_fdw
    RUN wget https://github.com/griddb/c_client/releases/download/v4.2.0/griddb_c_client-4.2.0-linux.x86_64.tar.gz && tar zxvf griddb_c_client-4.2.0-linux.x86_64.tar.gz && mv c_client-4.2.0 griddb && cp -rf griddb /app/postgresql-11.6/contrib/griddb_fdw
    RUN git clone --recursive https://github.com/EnterpriseDB/mongo_fdw.git /app/postgresql-11.6/contrib/mongo_fdw
    RUN git clone https://github.com/pgspider/mysql_fdw.git /app/postgresql-11.6/contrib/mysql_fdw
    RUN git clone https://github.com/tds-fdw/tds_fdw.git /app/postgresql-11.6/contrib/tds_fdw
    RUN git clone https://github.com/pgspider/sqlite_fdw.git /app/postgresql-11.6/contrib/sqlite_fdw
    RUN git clone https://github.com/pgspider/influxdb_fdw.git /app/postgresql-11.6/contrib/influxdb_fdw
    RUN cd /app/postgresql-11.6/contrib/griddb_fdw && make && make install
    RUN cd /app/postgresql-11.6/contrib/mongo_fdw && git submodule update --init && ./autogen.sh --with-master && make && make install
    RUN cd /app/postgresql-11.6/contrib/mysql_fdw && make && make install
    RUN cd /app/postgresql-11.6/contrib/tds_fdw && make && make install
    RUN cd /app/postgresql-11.6/contrib/sqlite_fdw && make && make install
    RUN cd /app/postgresql-11.6/contrib/influxdb_fdw && make USE_PGXS=1 with_llvm=no && make install USE_PGXS=1 with_llvm=no
    FROM debian:stretch-slim
    ENV GOSU_VERSION 1.11
    RUN apt-get update && apt-get install -y wget libreadline-dev libmongoc-1.0-0 libmysql++-dev libsqlite3-dev libsybdb5 freetds-dev freetds-common
    # explicitly set user/group IDs
    RUN set -eux; 
      groupadd -r postgres --gid=999; 
    # https://salsa.debian.org/postgresql/postgresql-common/blob/997d842ee744687d99a2b2d95c1083a2615c79e8/debian/postgresql-common.postinst#L32-35
      useradd -r -g postgres --uid=999 --home-dir=/var/lib/postgresql --shell=/bin/bash postgres; 
    # also create the postgres user's home directory with appropriate permissions
    # see https://github.com/docker-library/postgres/issues/274
      mkdir -p /var/lib/postgresql; 
      chown -R postgres:postgres /var/lib/postgresql
    RUN wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" 
       && chmod +x /usr/local/bin/gosu 
       && gosu nobody true
    # make the "en_US.UTF-8" locale so postgres will be utf-8 enabled by default
    RUN set -eux; 
       if [ -f /etc/dpkg/dpkg.cfg.d/docker ]; then 
       # if this file exists, we're likely in "debian:xxx-slim", and locales are thus being excluded so we need to remove that exclusion (since we need locales)
       grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; 
       sed -ri '//usr/share/locale/d' /etc/dpkg/dpkg.cfg.d/docker; 
       ! grep -q '/usr/share/locale' /etc/dpkg/dpkg.cfg.d/docker; 
       fi; 
       apt-get update; apt-get install -y locales; rm -rf /var/lib/apt/lists/*; 
       localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
    ENV LANG en_US.utf8
    # install "nss_wrapper" in case we need to fake "/etc/passwd" and "/etc/group" (especially for OpenShift)
    # https://github.com/docker-library/postgres/issues/359
    # https://cwrap.org/nss_wrapper.html
    RUN set -eux; 
       apt-get update; 
       apt-get install -y --no-install-recommends libnss-wrapper; 
       rm -rf /var/lib/apt/lists/*
    RUN mkdir /docker-entrypoint-initdb.d
    COPY --from=build /usr/local/pgspider /usr/local/pgspider
    COPY --from=build /app/postgresql-11.6/contrib/griddb_fdw/griddb/bin/libgridstore.so.0.0.0 /usr/lib/x86_64-linux-gnu/libgridstore.so
    RUN ln -s /usr/lib/x86_64-linux-gnu/libgridstore.so /usr/lib/x86_64-linux-gnu/libgridstore.so.0
    RUN sed -ri "s!^#?(listen_addresses)s*=s*S+.*!1 = '*'!" /usr/local/pgspider/share/postgresql/postgresql.conf.sample; 
       grep -F "listen_addresses = '*'" /usr/local/pgspider/share/postgresql/postgresql.conf.sample
    RUN mkdir -p /var/run/postgresql && chown -R postgres:postgres /var/run/postgresql && chmod 2777 /var/run/postgresql
    ENV PATH $PATH:/usr/local/pgspider/bin
    ENV PGDATA /var/lib/postgresql/data
    RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA"
    VOLUME /var/lib/postgresql/data
    COPY docker-entrypoint.sh /usr/local/bin/
    RUN ln -s usr/local/bin/docker-entrypoint.sh / # backwards compat
    ENTRYPOINT ["docker-entrypoint.sh"]
    EXPOSE 5432
    CMD ["postgres"]
     
     

    参考资料

    https://github.com/rongfengliang/pgspider-docker/blob/master/Dockerfile-all-in-one
    https://hub.docker.com/repository/docker/dalongrong/pgspider
    https://github.com/pgspider

  • 相关阅读:
    一个简单的knockout.js 和easyui的绑定
    knockoutjs + easyui.treegrid 可编辑的自定义绑定插件
    Knockout自定义绑定my97datepicker
    去除小数后多余的0
    Windows Azure Web Site (15) 取消Azure Web Site默认的IIS ARR
    Azure ARM (1) UI初探
    Azure Redis Cache (3) 创建和使用P级别的Redis Cache
    Windows Azure HandBook (7) 基于Azure Web App的企业官网改造
    Windows Azure Storage (23) 计算Azure VHD实际使用容量
    Windows Azure Virtual Network (11) 创建VNet-to-VNet的连接
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/12274780.html
Copyright © 2011-2022 走看看