meteor的Docker和Graphicsmagick

我正在寻找如何在Meteor Up Docker上安装Graphicsmagick。

我发现这个解决scheme( 在泊坞窗内访问二进制文件 ),但我无法工作,我在哪里把这些行在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 

每次重新启动容器时重新安装graphicsmagick包似乎是一件我不想做的事情。

如果你正在修改启动脚本,不妨使用一个Dockerfile:

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

然后修改start.sh模板,用graphicsmagick构build一个新的docker镜像,标记它并使用该镜像:

请参阅: https : //gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions

编辑:在哪里把Dockerfile?

start.sh模板复制到/opt/<appName>/config/目前Dockerfile将需要在同一目录( /opt/<appName>/config/Dockerfile

请参阅Linux init任务

或者 ,您可以为Docker docker build指定特定的Dockerfile并使用-f标志

或者你的第三个select是使用here文件将Dockerfilepipe理到docker docker build

我已经更新了start.sh的要点 ,我们不再拉动meteord:base image,而是build立它:

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

docker build每次都会运行,但只要需求没有改变,docker就会使用caching的docker镜像。

Kadirahq的Meteor Up 开发版本允许在configuration文件( mup.js )中指定一个自定义的Docker镜像。

带有Graphicsmagick的MeteorD-Images安装在Docker Hub上 。

这让我有一个工作部署(meteor1.3.2.4,米Up 309cefb ,节点v5.4.1):

mup.js:

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

我不能得到@hobbyhobbit提到的docker图像,所以我想出了如何编写一个使用abernix / meteord:base,然后安装graphicsmagick的图像。 非常简单,但它似乎在Meteor 1.4.1.1上为我工作

我只是在我的mup.js文件中做了这个

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

这是一个非常痛苦的工作,所以我很乐意帮助任何正在为此付出努力的人。

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

如果if语句成功,您应该能够看到正在刷新的映像所对应的正在运行的容器。 在我看来,你可以在fi之后添加两行来获取环境variables。

build立一个正确的图像,但你可以做临时的:

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

选中imagemagick: docker exec -it MeteorAppName convert -version

你为什么不添加下面的包meteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

它试图确保Graphicsmagick可用。 它适用于我的用例,我认为它也将与docker工作。