10

Meteor Up Docker で Graphicsmagick をインストールする方法を探しています。

私はこの解決策を見つけました ( 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
4

6 に答える 6

14

コンテナを再起動するたびに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)

Linux init タスクを参照してください

-fまたは、フラグを使用して特定の Dockerfile を指定することもできますdocker build

または、3番目のオプションは、ヒアドキュメントdocker buildを使用してDockerfileをパイプすることです

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 イメージを使用します。

于 2015-08-09T11:59:45.193 に答える
1

@bskp が言及した docker イメージを動作させることができなかったので、abernix/meteord:base を使用し、graphicsmagick をインストールした docker イメージを作成する方法を見つけました。非常に単純ですが、Meteor 1.4.1.1 で動作しているようです

mup.jsファイルでこれを行いました

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

これは仕事をするのに大きな苦痛だったので、これに苦しんでいる人を助けてくれることをうれしく思います.

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

于 2016-09-12T14:57:16.453 に答える
0

ifステートメントが成功すると、 grepしているイメージに対応する実行中のコンテナーが表示されるはずです。私の意見では、fi の後に 2 行を追加して、環境変数を取得できます。

于 2015-08-09T07:47:17.790 に答える
0

get things rightのイメージを作成しますが、一時的に実行できます。

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

docker restart MeteorAppName

イメージマジックを確認してください:docker exec -it MeteorAppName convert -version

于 2016-08-18T02:38:26.120 に答える
-4

次のパッケージを追加してみませんかmeteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

Graphicsmagick が利用可能であることを確認しようとします。私のユースケースではうまくいきました。dockerでもうまくいくと思います。

于 2015-08-09T13:09:40.303 に答える