我正在寻找如何在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
最佳答案
每次重新启动容器时,重新安装graphicsmagick软件包似乎是一个黑客,我不想做.
如果你正在修改起始脚本,可以使用Dockerfile:
FROM meteorhacks/meteord:base
RUN apt-get install graphicsmagick -y
然后修改start.sh模板以使用graphicsmagick构建一个新的Docker映像,并对其进行标记并使用该映像:
见:https://gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions
编辑:在哪里放Dockerfile?
start.sh模板被复制到/ opt /< appName> / config /,目前Dockerfile需要在同一个目录(/ opt /< appName> / config / Dockerfile)
或者,您可以使用docker build
的-f标志指定特定的Dockerfile
或者您的第三个选项是使用here document管理Dockerfile到docker build
我更新了start.sh gist,我们不再拉meteord:基本图像,而是建立它:
docker build -t meteorhacks/meteord:app - << EOF
FROM meteorhacks/meteord:base
RUN apt-get install graphicsmagick -y
EOF
码头构建将每次运行,但只要要求不变,docker将使用它缓存的码头图像.