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", },
这是一个非常痛苦的工作,所以我很乐意帮助任何正在为此付出努力的人。
如果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工作。