2015-12-30 23 views
6

Sto provando a configurare un ambiente di sviluppo utilizzando la finestra mobile-comporre e il contenitore non sembra disporre delle autorizzazioni per la directory host montata sul contenitore, i ' m questo errore durante l'esecuzione di un compito grugnito che tenta di modificare le cartelle all'interno del volume:Aggiunta di autorizzazioni alla directory host con finestra mobile-comporre

app_1     | Warning: Unable to delete ".tmp" file (EACCES, permission denied '.tmp'). Use --force to continue. 

ecco il mio file di finestra mobile:

FROM node:0.10 

RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app 

RUN apt-get update \ 
    && apt-get install -y --no-install-recommends ruby-sass \ 
    && rm -rf /var/lib/apt/lists/* \ 
    && apt-get clean -y \ 
    && apt-get autoremove -y 

RUN npm install -g grunt-cli bower 

RUN groupadd -r node \ 
&& useradd -r -m -g node node 

RUN chown -R node:node /usr/src/app 

USER node 

EXPOSE 8080 

e il mio file finestra mobile-composizione:

app: 
    build: . 
    dockerfile: Dockerfile.dev 
    ports: 
    - "9000:9000" 
    env_file: 
    - ./server/config/env/development.env 
    volumes: 
    - ./:/usr/src/app:Z 
    command: bash -c "npm install && bower install && grunt dev && npm start" 

db: 
    ports: 
    - "27017:27017" 
  • Io corro ubuntu 15.10 con finestra mobile-comporre la versione 1.5.2, costruire 7240ff3
  • Si noti che sto usando la: Z autorizzazione
+0

Bene, si impostano i permessi, ma poi si monta un volume in alto, che avrà permessi diversi. –

+0

Ma sembra che le autorizzazioni abbiano a che fare con nodo vs root in ogni caso - funziona se si rimuove la linea del nodo USER? –

+0

@AdrianMouat - Ho provato a rimuovere la linea mkdir, sono d'accordo è ridondante ma non è quello che sta infrangendo le mie autorizzazioni per quanto posso vedere, ho ricevuto lo stesso errore gist per modificare Dockerfile: https://gist.github.com/avif/a7a99b14a6abca6157e6 Ho provato a rimuovere le linee relative all'utente del nodo e ha funzionato (!), sebbene ora l'app stia utilizzando l'utente root diverso dalla mia configurazione di produzione, il che era il punto principale dell'utilizzo della finestra mobile in primo luogo. .. gist per modificare Dockerfile: https://gist.github.com/avif/c26d7a389aad11e8e69d ma grazie, almeno ora il problema è isolato per il nodo utente –

risposta

2

E 'solo una cosa che i permessi dei file .

La prima cosa da capire è che il volume che stai montando ha permessi diversi per la cartella che crei e chown nel Dockerfile. L'utente del nodo presumibilmente non ha le autorizzazioni per accedere a questa cartella. È possibile risolvere questo problema eseguendo qualcosa come:

$ docker run -u root -v $(pwd):/usr/src/app:Z my_app_image chown -R node:node /usr/src/app 

Ciò modificherà le autorizzazioni della cartella sull'host.

In alternativa, se è necessario essere root per eseguire npm install && bower install, è possibile lasciare l'utente root come utente predefinito, quindi passare all'utente del nodo per eseguire l'applicazione. Qualcosa di simile:

npm install && bower install && gosu node npm start 

Qui ho usato lo strumento gosu, che sarà necessario installare nell'immagine. È un po 'più bello di sudo, in quanto non avvia un secondo processo.

+0

Come ho visto, il primo comando esegue l'immagine della finestra mobile con l'utente root e monta la cartella/user/src/app con le autorizzazioni per quell'utente, si procede quindi a utilizzare il comando chown per fornire al nodo autorizzazioni utente per la cartella anche. Questo non ha funzionato per me, ancora nessuna autorizzazione per l'utente del nodo, ecco un sommario al mio tentativo con docker-compose: https: //gist.github.com/avif/8cf231ebda31cba379f9 Ho lasciato l'utente root nel Dockerfile –

+0

Funziona se disattiva il selinux? –

+0

No, selinux disabilitato non ha avuto effetto –

Problemi correlati