Meteor Up Docker 和 Graphicsmagick
Meteor Up Docker and Graphicsmagick
我正在寻找如何在 Meteor Up 安装 Graphicsmagick Docker。
我找到了这个解决方案 () 但我无法工作,我应该把这些行放在 start.sh
的什么地方?
meteorDockerId=docker ps | grep meteorhacks/meteord:base | awk '{print }'
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
如果 if 语句 成功,您应该能够看到一个 运行 容器对应于您正在 grepping.在我看来,您可以在 fi 之后添加两行来获取环境变量。
每次重新启动容器时重新安装 graphicsmagick 包似乎是我不想做的 hack。
如果您已经在修改启动脚本,不妨使用 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:base 图像并改为构建它:
docker build -t meteorhacks/meteord:app - << EOF
FROM meteorhacks/meteord:base
RUN apt-get install graphicsmagick -y
EOF
docker build
每次都会 运行,但只要要求不变,docker 就会使用它缓存的 docker 个图像。
为什么不添加下面的包meteor add cfs:graphicsmagick
https://atmospherejs.com/cfs/graphicsmagick
它试图确保 Graphicsmagick 可用。它适用于我的用例,我认为它也适用于 docker。
Kadirahq 的 Meteor Up 开发版本 允许在配置文件 (mup.js
) 中指定自定义 Docker 图像。
安装了 Graphicsmagick 的 MeteorD-Images 在 Docker Hub 上可用。
这让我有了一个工作部署(Meteor 1.3.2.4,Meter Up 309cefb,Node v5.4.1):
mup.js:
module.exports = {
…
meteor: {
dockerImage: 'ianmartorell/meteord-graphicsmagick',
…
},
};
为 get things right 构建图像,但您可以临时执行:
docker exec -it MeteorAppName apt-get install imagemagick -y
docker restart MeteorAppName
检查 imagemagick:docker exec -it MeteorAppName convert -version
我无法得到@bskp 提到的 docker 图像,所以我想出了如何编写一个使用 abernix/meteord:base 然后安装 graphicsmagick 的图像。非常简单,但它似乎适用于 Meteor 1.4.1.1
我刚刚在我的 mup.js 文件中做了这个
docker: {
image: "joshjoe/meteor-graphicsmagick",
},
开始工作非常痛苦,所以我很乐意帮助任何正在为此苦苦挣扎的人。
我正在寻找如何在 Meteor Up 安装 Graphicsmagick Docker。
我找到了这个解决方案 (start.sh
的什么地方?
meteorDockerId=docker ps | grep meteorhacks/meteord:base | awk '{print }'
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
如果 if 语句 成功,您应该能够看到一个 运行 容器对应于您正在 grepping.在我看来,您可以在 fi 之后添加两行来获取环境变量。
每次重新启动容器时重新安装 graphicsmagick 包似乎是我不想做的 hack。
如果您已经在修改启动脚本,不妨使用 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:base 图像并改为构建它:
docker build -t meteorhacks/meteord:app - << EOF
FROM meteorhacks/meteord:base
RUN apt-get install graphicsmagick -y
EOF
docker build
每次都会 运行,但只要要求不变,docker 就会使用它缓存的 docker 个图像。
为什么不添加下面的包meteor add cfs:graphicsmagick
https://atmospherejs.com/cfs/graphicsmagick
它试图确保 Graphicsmagick 可用。它适用于我的用例,我认为它也适用于 docker。
Kadirahq 的 Meteor Up 开发版本 允许在配置文件 (mup.js
) 中指定自定义 Docker 图像。
安装了 Graphicsmagick 的 MeteorD-Images 在 Docker Hub 上可用。
这让我有了一个工作部署(Meteor 1.3.2.4,Meter Up 309cefb,Node v5.4.1):
mup.js:
module.exports = {
…
meteor: {
dockerImage: 'ianmartorell/meteord-graphicsmagick',
…
},
};
为 get things right 构建图像,但您可以临时执行:
docker exec -it MeteorAppName apt-get install imagemagick -y
docker restart MeteorAppName
检查 imagemagick:docker exec -it MeteorAppName convert -version
我无法得到@bskp 提到的 docker 图像,所以我想出了如何编写一个使用 abernix/meteord:base 然后安装 graphicsmagick 的图像。非常简单,但它似乎适用于 Meteor 1.4.1.1
我刚刚在我的 mup.js 文件中做了这个
docker: {
image: "joshjoe/meteor-graphicsmagick",
},
开始工作非常痛苦,所以我很乐意帮助任何正在为此苦苦挣扎的人。