2015-08-09 15 views
10

Ich bin auf der Suche nach der Installation von Graphicsmagick bei Meteor Up Docker.Meteor Up Docker und Graphicsmagick

Ich fand diese Lösung (Access binaries inside docker), aber ich konnte keine Arbeit machen, wo setze ich diese Zeilen auf start.sh?

meteorDockerId=docker ps | grep meteorhacks/meteord:base | awk '{print $1}' 
docker exec $meteorDockerId apt-get install graphicsmagick -y 

Das ist mein 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 

Antwort

14

Das Grafikmagie-Paket neu zu installieren, wenn Sie die Container neu starten, scheint ein Hack zu sein, den ich nicht machen möchte.

Wenn Sie das Startskripts sind Modifizierung bereits, könnte genauso gut eine Dockerfile verwenden:

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

Dann start.sh Vorlage ändern, um ein neues Docker Bild mit graphicsmagick zu bauen, markieren sie und das Bild verwenden statt:

sehen: https://gist.github.com/so0k/7d4be21c5e2d9abd3743/revisions

EDIT: Wo Dockerfile setzen?

start.sh Vorlage /opt/<appName>/config/ kopiert wird, zur Zeit der Dockerfile müssten im selben Verzeichnis (/opt/<appName>/config/Dockerfile)

siehe Linux init Task

Alternativ können Sie bestimmte Dockerfile mit dem -f Flag für die angeben werden docker build

Oder Ihre dritte Option ist Dockerfi Rohr le zu docker build eine here document

ich mit der start.sh gist aktualisiert haben, wir nicht mehr die meteord ziehen: Basisbild und bauen statt:

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

Die docker build wird jedes Mal ausgeführt werden, aber solange die Anforderungen ändern sich nicht, Andockfenster verwendet die zwischengespeicherten Docker-Images.

+0

konnte ich nicht finden, wo meine Docker Datei zu setzen. Ich putted auf '/ opt/instagatas/config' und'/opt/instagatas', aber ich sehe diese Nachricht 'Dockerfile: Dockerfile nicht finden'. Wo soll ich es hinstellen? –

+0

Ich habe meine Antwort aktualisiert, um Ihren Kommentar, wo die Dockerfile setzen, zu aktualisieren, ich denke, es könnte tatsächlich besser sein, den Inhalt zu den 'Docker Build' Befehl innerhalb der Vorlage start.sh zu pumpen. –

+0

Ich habe die dritte Option versucht und es funktionierte, wenn ich 'mupx restart' verwende, aber wenn ich'mupx deploy' ausführe, wird die' start.sh' wieder auf das Original zurückgesetzt, also muss ich die Datei erneut ändern und neu starten. Theres ein Weg, dies nicht passieren? –

0

Wenn die if-Anweisung Erfolge, sollten Sie in der Lage sein, einen laufenden Behälter entsprechend dem Bild zu sehen, Sie sind greppen. Meiner Meinung nach können Sie die beiden Zeilen nach dem fi hinzufügen, um die Umgebungsvariable zu erhalten.

-4

Warum Sie das folgende Paket meteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

Es wird versucht, um sicherzustellen, Graphicsmagick ist verfügbar nicht hinzufügen. Es funktionierte für meinen Anwendungsfall, ich denke, es wird auch mit Docker funktionieren.

+0

Ich benutze dieses Paket, aber es muss Graphicsmagick auf dem Server installiert werden, und das ist, was ich versuche zu tun. –

+0

@ DiegoGuimarães das Paket auch installiert gm für mich, so dass es interessant ist, könnte es ein anderes Problem –

+1

Dies wird nicht das Paket auf Ihrem Server installieren. – Dude

3

Die Entwicklung Version von Meteor Up bei Kadirahq ermöglicht die Angabe eines benutzerdefinierten Docker Bild in der Konfigurationsdatei (mup.js).

MeteorD-Bilder mit installiertem Graphicsmagick sind unter Docker Hub verfügbar.

Das hat mir einen Arbeits Einsatz (Meteor 1.3.2.4, Meter Up 309cefb, Knoten V5.4.1):

mup.js:

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

Mußten Sie dieses Docker-Image irgendwo herunterladen, oder haben Sie gerade diese Änderung in der Datei mup.js vorgenommen und es hat funktioniert? – JoshJoe

0

ein Bild Bauen für things right zu bekommen, Sie können jedoch vorübergehend tun:

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

docker restart MeteorAppName 

prüfen imagemagick: docker exec -it MeteorAppName convert -version

1

Ich konnte nicht das Docker-Bild, das @hobbyhobbit genannt, um zu arbeiten, so dass ich herausgefunden, wie man eine, die abernix/meteord verwendet: Basis und dann Graphicsmagick installiert hat. Sehr einfach, aber es scheint für mich auf Meteor 1.4.1.1

Ich tat dies nur in meinem mup.js zu arbeiten

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

Das war ein großer Schmerz-Datei zum Laufen zu bringen, so würde ich Sei froh, jedem zu helfen, der damit zu kämpfen hat.

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

Verwandte Themen