2015-08-09 8 views
10

Sto cercando come installare Graphicsmagick su Meteor Up Docker.Meteor Up Docker e Graphicsmagick

Ho trovato questa soluzione (Access binaries inside docker) ma non sono riuscito a fare il lavoro, dove inserisco quelle linee a start.sh?

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

Questo è il mio 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 

risposta

14

Reinstallare il pacchetto graphicsmagick ogni volta che si riavvia i contenitori sembra un trucco che non vorrei fare.

Se si sta modificando già lo script di avvio, potrebbe anche utilizzare un Dockerfile:

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

Quindi modificare start.sh template per costruire una nuova immagine finestra mobile con GraphicsMagick, tag e utilizzare quell'immagine invece:

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

EDIT: Dove mettere Dockerfile?

start.sh modello viene copiato /opt/<appName>/config/, attualmente il Dockerfile avrebbe bisogno di essere in quella stessa directory (/opt/<appName>/config/Dockerfile)

vedere Linux init Task

alternativa, è possibile specificare specifica Dockerfile con la bandiera -f per la docker build

Oppure la terza opzione è pipe pipe Dockerfi Le ad docker build utilizzando un here document

Ho aggiornato il start.sh gist, tiriamo più la meteord: immagine di base e costruire invece:

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

Il docker build correremo ogni volta, ma fino a quando il i requisiti non cambiano, la finestra mobile utilizzerà le immagini della finestra mobile memorizzate nella cache.

+0

non riuscivo a trovare dove mettere il mio file Docker. Ho messo su '/ opt/instagatas/config' e'/opt/instagatas' ma vedo questo messaggio 'Can not locate Dockerfile: Dockerfile'. Dove lo metto? –

+0

Ho aggiornato la mia risposta per indirizzare il tuo commento su dove collocare il Dockerfile, penso che potrebbe essere meglio importare il contenuto nel comando 'docker build' all'interno del modello start.sh. –

+0

Ho provato la terza opzione e ha funzionato se uso 'mupx restart', ma quando eseguo' mupx deploy' la 'start.sh' cambia di nuovo in originale, quindi ho bisogno di cambiare di nuovo il file e riavviare. C'è un modo per questo non succede? –

0

Se i if successi, si dovrebbe essere in grado di vedere un contenitore in esecuzione corrispondente all'immagine siete grep. A mio parere è possibile aggiungere le due righe dopo lo fi per ottenere la variabile di ambiente.

-4

Perché non aggiungere il seguente pacchetto meteor add cfs:graphicsmagick https://atmospherejs.com/cfs/graphicsmagick

Si cerca di fare in modo GraphicsMagick è disponibile. Ha funzionato per il mio caso d'uso, penso che funzionerà anche con la finestra mobile.

+0

Sto usando questo pacchetto, ma Graphicsmagick deve essere installato sul server, ed è quello che sto cercando di fare. –

+0

@ DiegoGuimarães che il pacchetto ha installato anche gm per me, quindi è interessante che potrebbe essere un altro problema –

+1

questo non installerà il pacchetto sul tuo server. – Dude

3

Lo sviluppo versione di Meteor Fino a Kadirahq consente di specificare un costume Docker immagine nel file di configurazione (mup.js).

Le immagini Meteor con Graphicsmagick installato sono disponibili su Docker Hub.

Questo mi ha fatto una distribuzione di lavoro (Meteor 1.3.2.4, Contatore Up 309cefb, Nodo v5.4.1):

mup.js:

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

Hai dovuto scaricare questa immagine docker da qualche parte, o hai appena apportato questa modifica nel file mup.js e ha funzionato? – JoshJoe

0

costruire un'immagine per ottenere things right, ma si può fare temporanea:

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

docker restart MeteorAppName 

Controllare ImageMagick: docker exec -it MeteorAppName convert -version

1

Non sono riuscito a ottenere l'immagine della finestra mobile che @hobbyhobbit ha menzionato per funzionare, quindi ho capito come scriverne uno che utilizza abernix/meteord: base e quindi ha installato graphicsmagick. Molto semplice, ma sembra funzionare per me su Meteor 1.4.1.1

ho appena fatto questo nei miei mup.js presentare

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

Questo è stato un dolore enorme per arrivare a lavorare, quindi mi piacerebbe sii felice di aiutare chiunque stia lottando con questo.

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