Meteor Up Docker и Graphicsmagick

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

Ответ 1

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

Если вы уже изменяете начало script, также можете использовать файл Docker:

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

Затем измените шаблон start.sh, чтобы создать новое изображение докеров с помощью graphicsmagick, пометьте его и используйте это изображение:

см. ниже: https://gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions

EDIT: Где поставить файл Docker?

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

см. Задача Linux init

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

Или ваш третий вариант - передать файл Dockerfile docker build с помощью здесь.

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

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

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

Ответ 2

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

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

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

mup.js:

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Ответ 5

Создайте образ для получения вещей в порядке, но вы можете делать временные:

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

docker restart MeteorAppName

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

Ответ 6

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

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