2015-08-09 42 views
10

我正在尋找如何在Meteor Up Docker上安裝Graphicsmagick。Meteor Up Docker和Graphicsmagick

我發現這個解決方案(Access binaries inside docker),但我無法工作,我在哪裏把這些行在start.sh

meteorDockerId=docker ps | grep meteorhacks/meteord:base | awk '{print $1}' 
docker exec $meteorDockerId apt-get install graphicsmagick -y 

這是我start.sh

#!/bin/bash 

APPNAME=instagatas 
APP_PATH=/opt/$APPNAME 
BUNDLE_PATH=$APP_PATH/current 
ENV_FILE=$APP_PATH/config/env.list 
PORT=80 
USE_LOCAL_MONGO=0 

# remove previous version of the app, if exists 
docker rm -f $APPNAME 

# remove frontend container if exists 
docker rm -f $APPNAME-frontend 

set -e 
docker pull meteorhacks/meteord:base 

if [ "$USE_LOCAL_MONGO" == "1" ]; then 
    docker run \ 
    -d \ 
    --restart=always \ 
    --publish=$PORT:80 \ 
    --volume=$BUNDLE_PATH:/bundle \ 
    --env-file=$ENV_FILE \ 
    --link=mongodb:mongodb \ 
    --hostname="$HOSTNAME-$APPNAME" \ 
    --env=MONGO_URL=mongodb://mongodb:27017/$APPNAME \ 
    --name=$APPNAME \ 
    meteorhacks/meteord:base 
else 
    docker run \ 
    -d \ 
    --restart=always \ 
    --publish=$PORT:80 \ 
    --volume=$BUNDLE_PATH:/bundle \ 
    --hostname="$HOSTNAME-$APPNAME" \ 
    --env-file=$ENV_FILE \ 
    --name=$APPNAME \ 
    meteorhacks/meteord:base 
fi 


    docker pull meteorhacks/mup-frontend-server:latest 
    docker run \ 
    -d \ 
    --restart=always \ 
    --volume=/opt/$APPNAME/config/bundle.crt:/bundle.crt \ 
    --volume=/opt/$APPNAME/config/private.key:/private.key \ 
    --link=$APPNAME:backend \ 
    --publish=443:443 \ 
    --name=$APPNAME-frontend \ 
    meteorhacks/mup-frontend-server /start.sh 

回答

14

每次重新啓動容器時重新安裝graphicsmagick軟件包看起來像是一件我不想做的事情。

如果您已經修改啓動腳本,還不如用一個Dockerfile:

FROM meteorhacks/meteord:base 
RUN apt-get install graphicsmagick -y 

然後修改start.sh模板,以建立一個新的泊塢窗圖像與實:graphicsmagick,標記並使用該圖片來代替:

請參閱:https://gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions

編輯:在哪裏把Dockerfile?

start.sh模板複製到/opt/<appName>/config/,目前Dockerfile將需要在同一目錄(/opt/<appName>/config/Dockerfile

看到Linux init Task

或者,您可以用-f標誌的指定特定的Dockerfile docker build

你的第三個選項是pipe to dockerfi樂至docker build使用here document

我已經更新了start.sh gist,我們不再拉meteord:基本圖像,並建立它,而不是:

docker build -t meteorhacks/meteord:app - << EOF 
FROM meteorhacks/meteord:base 
RUN apt-get install graphicsmagick -y 
EOF 

docker build將每次運行,但只要需求不會改變,docker將使用它緩存的docker鏡像。

+0

我無法找到放置Docker文件的位置。我把'/ opt/instagatas/config'和'/ opt/instagatas'放在了一起,但是我看到這條消息'Can not locate Dockerfile:Dockerfile'。我在哪裏放? –

+0

我已經更新了我的回答,以解決您的註釋放置Dockerfile的位置,我認爲將內容傳遞給start.sh模板中的'docker build'命令可能會更好。 –

+0

我嘗試了第三個選項,如果我使用'mupx restart',它會起作用,但是當我做'mupx deploy'時'start.sh'會變回原來的,所以我需要再次更改文件並重新啓動。 Theres通往這的方式不會發生? –

0

如果if語句成功,你應該可以看到對應的圖像運行的容器你grepping。在我看來,您可以在fi之後添加兩行以獲取環境變量。

-4

你爲什麼不添加以下包meteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

它試圖以確保GraphicsMagick工具可用。它適用於我的使用案例,我認爲它也可以與碼頭工作。

+0

我正在使用這個軟件包,但它需要將Graphicsmagick安裝在服務器上,這就是我想要做的。 –

+0

@DiegoGuimarães該軟件包也爲我安裝了gm,所以這很有趣它可能是另一個問題 –

+1

這不會在你的服務器上安裝軟件包。 – Dude

3

Kadirahq流星最多的開發版可以在配置文件(mup.js)的自定義Docker映像檔的規範。

帶有Graphicsmagick的MeteorD-Images安裝在Docker Hub上。

這讓我的工作部署(流星1.3.2.4,儀表最多309cefb,節點V5.4.1):

mup.js:

module.exports = { 
    … 
    meteor: { 
    dockerImage: 'ianmartorell/meteord-graphicsmagick', 
    … 
    }, 
}; 
+1

您是否需要在某處下載此Docker鏡像,或者您是否只是在mup.js文件中進行了此更改,並且它工作正常? – JoshJoe

0

構建一個圖像得到things right,但你可以做臨時的:

docker exec -it MeteorAppName apt-get install imagemagick -y 

docker restart MeteorAppName 

檢查ImageMagick的:docker exec -it MeteorAppName convert -version

1

我無法獲得@hobbyhobbit提到的碼頭圖像,因此我想出瞭如何編寫使用abernix/meteord:base的圖像,然後安裝graphicsmagick。很簡單,但它似乎是工作流星1.4.1.1

我,我只是在我的mup.js做這個文件

docker: { 
    image: "joshjoe/meteor-graphicsmagick", 
}, 

這是一個巨大的疼痛得到工作,所以我樂意幫助任何正在爲此而苦惱的人。

https://github.com/c316/meteor-graphicsmagick

相關問題