2015-08-09 81 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

相关问题