DockerFile基于debian容器削葱,配置postgis

自定義容器背景

由于最近產(chǎn)品開發(fā)的需要,寫了一個包含下載和上傳的項目淳梦,可以支持.shp格式的文件析砸。因為我們用的postgresql 數(shù)據(jù)庫,需要編譯postgis爆袍,這個過程是有些復(fù)雜的首繁,需要配置編譯一些其他的插件,如果需要用到一個新的服務(wù)器上陨囊,就需要重新配置一遍弦疮,費時費力。為了能夠避免這一問題蜘醋,就想到了用docker配置胁塞,即插即用,節(jié)省時間和精力。

為什么用debian配置容器

一般來說Debian作為適合于服務(wù)器的操作系統(tǒng)闲先,它比Ubuntu要穩(wěn)定得多状土。可以說穩(wěn)定得無與倫比了伺糠。debian整個系統(tǒng)蒙谓,只要應(yīng)用層面不出現(xiàn)邏輯缺陷,基本上固若金湯训桶,是個常年不需要重啟的系統(tǒng)(當(dāng)然累驮,這是夸張了點,但并沒有夸大其穩(wěn)定性)舵揭。debian整個系統(tǒng)基礎(chǔ)核心非常小谤专,不僅穩(wěn)定,而且占用硬盤空間小午绳,占用內(nèi)存小置侍。相對debian來說,CentOS略顯體積大一點拦焚。128M的VPS即可以流暢運行Debian蜡坊,而CentOS則會略顯吃力。所以我們選擇了debian鏡像來配置容器赎败。

安裝docker

docker安裝的文檔網(wǎng)上很多秕衙,這里就不在進行贅述了,可以看這個網(wǎng)站僵刮,個人覺得寫的很詳細据忘。非常全,明了易懂搞糕,對新手也很友好勇吊。

docker–教程

獲取鏡像

docker 啟動之后,就需要獲取鏡像了寞宫。

## 拉取debian鏡像

docker pull debian:10

## 查看是否拉取debian鏡像成功

docker images 或 docker image ls

配置DockerFile文件

在一個目錄下萧福,新建Dockerfile文件

$ mkdir dockerFolder

$ cd dockerFolder

$ touch Dockerfile

$ vim Dockerfile

編輯Dockerfile,把下面代碼放進Dockerfile中

FROM debian

RUN set -x; buildDeps='gcc libc6-dev make wget' \

? && apt-get update \

? && apt-get install -y $buildDeps \

? && apt-get install -y xz-utils \

? && cd /usr/local \

? && wget https://nodejs.org/dist/v14.16.0/node-v14.16.0-linux-x64.tar.xz \

? && tar xf node-v14.16.0-linux-x64.tar.xz \

? && ln -sf /usr/local/node-v14.16.0-linux-x64/bin/npm? /usr/local/bin/npm \

? && ln -sf /usr/local/node-v14.16.0-linux-x64/bin/node? /usr/local/bin/node

COPY? gdal-2.3.1.tar.gz /usr/local/

COPY? geos-3.6.2.tar.bz2 /usr/local/

COPY? json-c-0.13.1.tar.gz /usr/local/

COPY? postgis-3.0.1.tar.gz /usr/local/

COPY? postgresql-12.0.tar.gz /usr/local/

COPY? proj-5.1.0.tar.gz /usr/local/

COPY? protobuf-c-1.3.3.tar.gz /usr/local/

COPY? protobuf-v3.5.0.tar.gz /usr/local/

RUN cd /usr/local \

? ? && tar -zxvf postgresql-12.0.tar.gz \

? ? && cd postgresql-12.0 \

? ? && apt-get install -y? libreadline-dev \? ## centos為:yum -y install readline-devel

? ? && apt-get install zlib1g.dev \

? ? && ./configure --prefix=/usr/local/pgsql \?

? ? && make \

? ? && make install \

RUN cd /usr/local \

? ? && apt-get install -y bzip2 \

? ? && apt-get install g++

? ? && tar -jxvf geos-3.6.2.tar.bz2? \

? ? && cd geos-3.6.2 \

? ? && ./configure --prefix=/usr/local/geos \?

? ? && make \

? ? && make install \

RUN cd /usr/local \

? ? && tar -zxvf proj-5.1.0.tar.gz? \

? ? && cd proj-5.1.0 \

? ? && ./configure --prefix=/usr/local/proj \?

? ? && make \

? ? && make install \

RUN cd /usr/local \

? ? && tar -zxvf json-c-0.13.1.tar.gz? \

? ? && cd json-c-0.13.1 \

? ? && apt-get install -y autoconf automake libtool \

? ? && ./configure --prefix=/usr/local/json-c \?

? ? && make \

? ? && make install \?

RUN cd /usr/local \

? ? && tar -zxvf gdal-2.3.1.tar.gz? \

? ? && cd gdal-2.3.1 \

? ? && ./configure --prefix=/usr/local/gdal \?

? ? && make \

? ? && make install \?

RUN cd /usr/local \

? ? && tar -zxvf protobuf-v3.5.0.tar.gz? \

? ? && cd protobuf-3.5.0 \

? ? && apt-get install -y autoconf automake libtool \

? ? && apt-get install -y curl \

? ? && apt-get install -y unzip \

? ? && sh ./autogen.sh \

? ? && ./configure --prefix=/usr/local/protobuf \?

? ? && make \

? ? && make install \?

RUN cd /usr/local \

? ? && tar -zxvf protobuf-c-1.3.3.tar.gz? \

? ? && cd protobuf-c-1.3.3 \

? ? && apt-get install -y? pkg-config \

? ? && export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig \

? ? && ./configure --prefix=/usr/local/protobuf-c \

? ? && make \

? ? && make install \


RUN cd /usr/local \

? ? && tar -zxvf postgis-3.0.1.tar.gz? \

? ? && cd postgis-3.0.1 \

? ? && apt-get install -y libxml2-dev \

? ? && ./configure --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/usr/local/geos/bin/geos-config --with-projdir=/usr/local/proj --with-gdalconfig=/usr/local/gdal/bin/gdal-config --with-protobufdir=/usr/local/protobuf-c --with-jsondir=/usr/local/json-c \

? ? && make \

? ? && make install \

? ? /usr/local/pgsql/bin

RUN ln -sf /usr/local/pgsql/bin/initdb /usr/bin/initdb \

? ? && ln -sf /usr/local/geos/lib/libgeos_c.so.1 /usr/local/pgsql/lib/ \

? ? && adduser postgres \

? ? && mkdir /usr/local/pgsql/data \

? ? && chown postgres /usr/local/pgsql/data


1:我們的項目是用的egg.js框架辈赋,所以第一部分配置了node鲫忍,其他語言請自行配置。

2:第二部分我用了COPY指令把壓縮包放到容器中钥屈,也可以直接用RUN 指令用wget的方法直接下載悟民,但是這個下載的過程有點慢,而且報錯得話篷就,再次運行Dockerfile射亏,還是會重復(fù)下載,很費時間,建議現(xiàn)在服務(wù)器上準備好需要的安裝包智润,用COPY指令復(fù)制進容器及舍。*

3:由于Dockerfile內(nèi)容較長,建議新手一段內(nèi)容一段內(nèi)容進行配置窟绷,可以避免不必要的坑锯玛。

運行DockerFile文件

在Dockerfile文件所在目錄,執(zhí)行文件

$ docker build -t debian .

最后一行出現(xiàn) 一下代碼兼蜈,表示配置成功

Successfully built <44aa4490ce2c>

進入debian容器

$ docker run -it? debian /bin/bash

$ su postgres

可以進入postgres用戶就表示配置成功了攘残。

打包debian容器

docker save -o debian.tar debian

生成一個tar包,就可以拿到任何環(huán)境下使用

在新的環(huán)境載入鏡像

docker load -i debian.tar

載入成功之后为狸,就可以使用鏡像了歼郭。

推薦一個非常好用的坐標系轉(zhuǎn)換的函數(shù), 基于PG+PostGIS轉(zhuǎn)換坐標系函數(shù)辐棒。支持各種坐標系病曾,點線面各類型轉(zhuǎn)換

坐標系轉(zhuǎn)換函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涉瘾,隨后出現(xiàn)的幾起案子知态,更是在濱河造成了極大的恐慌捷兰,老刑警劉巖立叛,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贡茅,居然都是意外死亡秘蛇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門顶考,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赁还,“玉大人,你說我怎么就攤上這事驹沿∷也撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵渊季,是天一觀的道長朋蔫。 經(jīng)常有香客問我,道長却汉,這世上最難降的妖魔是什么驯妄? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮合砂,結(jié)果婚禮上青扔,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好微猖,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布谈息。 她就那樣靜靜地躺著,像睡著了一般凛剥。 火紅的嫁衣襯著肌膚如雪黎茎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天当悔,我揣著相機與錄音傅瞻,去河邊找鬼。 笑死盲憎,一個胖子當(dāng)著我的面吹牛嗅骄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饼疙,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼溺森,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了窑眯?” 一聲冷哼從身側(cè)響起屏积,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎磅甩,沒想到半個月后炊林,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡卷要,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年渣聚,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片僧叉。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡奕枝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出瓶堕,到底是詐尸還是另有隱情隘道,我是刑警寧澤,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布郎笆,位于F島的核電站谭梗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏题画。R本人自食惡果不足惜默辨,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苍息。 院中可真熱鬧缩幸,春花似錦壹置、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至爆办,卻和暖如春难咕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背距辆。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工余佃, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人跨算。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓爆土,卻偏偏與公主長得像,于是被迫代替她去往敵國和親诸蚕。 傳聞我的和親對象是個殘疾皇子步势,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容