2015-08-09 17 views
10

Я ищу, как установить Graphicsmagick в Meteor Up Docker.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 

ответ

14

Повторная установка пакета graphicsmagick при каждом повторном запуске контейнеров кажется взломом, который я бы не хотел делать.

Если вы изменяете сценарий запуска уже, возможно, также использовать Dockerfile:

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

Затем измените start.sh шаблон для создания нового Docker изображения с GraphicsMagick, пометить его и использовать это изображение вместо:

см: https://gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions

EDIT: Где поставить Dockerfile?

start.sh шаблон копируется в /opt/<appName>/config/, в настоящее время Dockerfile должны были бы быть в том же каталоге (/opt/<appName>/config/Dockerfile)

см Linux init Task

Альтернативно, вы можете указать конкретный Dockerfile с -f флагом для docker build

Или Ваш третий вариант - это труба Dockerfi ле в docker build используя here document

Я обновил start.sh gist, мы больше не тянуть meteord: базовое изображение и построить его вместо:

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

docker build будет работать каждый раз, но до тех пор, как требования не меняются, докер будет использовать изображения докеров, которые он кэшировал.

+0

я не мог найти, где поместить мой файл Докер. Я поместил в '/ opt/instagatas/config' и'/opt/instagatas', но я вижу это сообщение 'Can not locate Dockerfile: Dockerfile'. Где я могу это выразить? –

+0

Я обновил свой ответ, чтобы ответить на ваш комментарий, где поставить Dockerfile, я думаю, что на самом деле было бы лучше связать содержимое с командой 'docker build' в шаблоне start.sh. –

+0

Я пробовал третий вариант, и он работал, если я использую 'mupx restart', но когда я делаю' mupx deploy' 'start.sh', вернемся к оригиналу, поэтому мне нужно снова изменить файл и перезапустить. Есть ли способ этого не произойти? –

0

Если , если заявление успехов, вы должны быть в состоянии увидеть бегущий контейнер, соответствующий изображению вы оглавлению. По моему мнению, вы можете добавить две строки после fi, чтобы получить переменную окружения.

-4

Почему вы не добавить следующий пакет meteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

Он пытается убедиться, что GraphicsMagick доступен. Он работал для моего случая использования, я думаю, что он будет работать и с докером.

+0

Я использую этот пакет, но для его установки на сервере требуется Graphicsmagick, и это то, что я пытаюсь сделать. –

+0

@ DiegoGuimarães этот пакет также установил gm для меня, поэтому интересно, что это может быть другая проблема. –

+1

это не установит пакет на вашем сервере. – Dude

3

Версия развития метеор Up в Kadirahq позволяет спецификации пользовательского Докеру изображения в конфигурационном файле (mup.js).

MeteorD-Images с установленным Graphicsmagick доступны на Docker Hub.

Это заставило меня рабочее развертывание (Meteor 1.3.2.4, метр вверх 309cefb, Node v5.4.1):

mup.js:

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

Вам нужно было загрузить это изображение докеры где-то, или вы только что внесли это изменение в файл mup.js, и это сработало? – JoshJoe

0

Построить изображение для получения things right, но вы можете сделать временное:

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

docker restart MeteorAppName 

Проверить ImageMagick: docker exec -it MeteorAppName convert -version

1

Я не мог получить изображение докеры, о котором упоминалось в @hobbyhobbit, поэтому я понял, как написать тот, который использует abernix/meteord: base, а затем установлен графический магик. Очень просто, но это, кажется, работает для меня на Метеоре 1.4.1.1

Я только что сделал это в моем mup.js файл

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

Это была огромная боль, чтобы получить работу, поэтому я будьте рады помочь любому, кто борется с этим.

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

 Смежные вопросы

  • Нет связанных вопросов^_^