[docker][php] eseguire comando ubuntu

Configurazione e uso di IDE, editor, compilatori, in fase di programmazione.
Scrivi risposta
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

[docker][php] eseguire comando ubuntu

Messaggio da london3 »

Codice: Seleziona tutto

$ docker-compose run --rm php -r "echo system('/usr/bin/desktop-file-install --help');"
Starting php-ubuntu_ubuntu_1 ... done
Creating php-ubuntu_php_run  ... done
sh: 1: /usr/bin/desktop-file-install: not found
mmmhhh... facciamo qualche approfondimento

Codice: Seleziona tutto

$ tree
.
├── docker-compose.yml
└── Dockerfile

$ cat docker-compose.yml 
version: "3.8"
services:
    php:
        image: php
        depends_on:
            - ubuntu
    ubuntu:
        build: .

$ cat Dockerfile 
FROM ubuntu
RUN apt-get -y update && apt-get -y install desktop-file-utils
Proviamo ad eseguire /usr/bin/desktop-file-install direttamente dal servizio ubuntu

Codice: Seleziona tutto

$ docker-compose run --rm ubuntu /usr/bin/desktop-file-install --help
Creating php-ubuntu_ubuntu_run ... done
Usage:
  desktop-file-install [OPTION?] [FILE...]
bla bla bla...
Funziona.
Quindi sembra che il servizio php non riesce a interagire con il servizio ubuntu (soprattutto a livello di file-system), malgrado abbia specificato la direttiva

Codice: Seleziona tutto

        depends_on:
            - ubuntu
Forse bisognerebbe creare un volume condiviso per la directory /usr/bin
Qui dice un sacco di cose https://docs.docker.com/storage/volumes/ ma già la mente mi va in confusione :D
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Prima di pensare a docker-compose, ti suggerirei di avviare quell'immagine in una sessione locale di docker ed assicurarti che in questo modo funzioni.
Detto questo, "apt-get" è deprecato. Ormai anche da diverso tempo. Non saprei dirti se sia ancora manutenuto per questioni di retro compatibilità. Tu non hai di questi problemi. Sostituisci "apt-get" con "apt". Detto questo, anche se hai messo una dipendenza su docker compose, questo non ti garantisce che php venga installato correttamente. Prova a fare questo sul tuo Dockerfile:

Codice: Seleziona tutto

FROM ubuntu:focal
RUN apt -y update && \
apt -y upgrade && \
apt -y install php && \
apt -y install desktop-file-utils && \
update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 && \
update-alternatives --set desktop-file-install  /full/path/desktop-file-install && \
echo update-alternatives --display desktop-file-install
Detto questo, come sempre, avvia in istanza locale l'immagine Docker cosi generata, e vedi se funziona. Logicamente dovrai personalizzare il Dockerfile che ti ho appena dato, con il full path dell'applicazione che vuoi installare. Domanda. Con docker, non sarebbe meglio scaricare un pacchetto tarball di quest'applicazione, e poi fare manualmente i puntamenti?
Avatar utente
corradoventu
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4617
Iscrizione: domenica 27 aprile 2008, 22:23
Desktop: GNOME
Distribuzione: Ubuntu 22.04,24.04,25.04,25.10
Sesso: Maschile
Località: Rezzoaglio (GE)
Contatti:

Re: [docker][php] eseguire comando ubuntu

Messaggio da corradoventu »

apt-get non è deprecato, ed è ovviamente mantenuto perchè è un comando (non un package) che fa parte del sistema, è solo meno comodo di apt.
apt è un package che usa apt-get per alcune funzioni.

Codice: Seleziona tutto

corrado@corrado-n03-oo-0626:~$ which apt-get
/usr/bin/apt-get

corrado@corrado-n03-oo-0626:~$ apt show apt
Package: apt
Version: 2.9.5
Priority: important
Build-Essential: yes
Section: admin
...................
Description: commandline package manager
 This package provides commandline tools for searching and
 managing as well as querying information about packages
 as a low-level access to all features of the libapt-pkg library.
 .
 These include:
  * apt-get for retrieval of packages and information about them
    from authenticated sources and for installation, upgrade and
    removal of packages together with their dependencies
  * apt-cache for querying available information about installed
    as well as installable packages
  * apt-cdrom to use removable media as a source for packages
  * apt-config as an interface to the configuration settings
  * apt-key as an interface to manage authentication keys

corrado@corrado-n03-oo-0626:~$ 
Con o senza religione, i buoni si comportano bene e i cattivi male, ma ci vuole la religione per far comportare male i buoni.
(Steven Weinberg)
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

DoctorStrange ha scritto:
venerdì 28 giugno 2024, 12:13
Prima di pensare a docker-compose, ti suggerirei di avviare quell'immagine in una sessione locale di docker ed assicurarti che in questo modo funzioni.
Potresti definire meglio cosa intendi per sessione locale?
Potresti definire meglio cosa intendi per avviare l'immagine?

Forse sarò fuori luogo, forse mi sbaglio, ma spero che tutti siamo al corrente che tra immagine e container c'è una certa differenza

https://www.google.com/search?q=avviare ... UTF-8#ip=1

https://www.google.com/search?q=docker+ ... e&ie=UTF-8
Detto questo, "apt-get" è deprecato. Ormai anche da diverso tempo. Non saprei dirti se sia ancora manutenuto per questioni di retro compatibilità. Tu non hai di questi problemi.
Non so di quali problemi parli, ma se lo dici tu mi fa piacere :)
Sostituisci "apt-get" con "apt". Detto questo, anche se hai messo una dipendenza su docker compose, questo non ti garantisce che php venga installato correttamente. Prova a fare questo sul tuo Dockerfile:

Codice: Seleziona tutto

FROM ubuntu:focal
RUN apt -y update && \
apt -y upgrade && \
apt -y install php && \
apt -y install desktop-file-utils && \
update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 && \
update-alternatives --set desktop-file-install  /full/path/desktop-file-install && \
echo update-alternatives --display desktop-file-install
Detto questo, come sempre, avvia in istanza locale l'immagine Docker cosi generata, e vedi se funziona. Logicamente dovrai personalizzare il Dockerfile che ti ho appena dato, con il full path dell'applicazione che vuoi installare.
La questione dell'avvio rimane in sospeso. Come già detto, attendo chiarimenti.

Anche qui potresti definire meglio cosa intendi per full path dell'applicazione?
Potresti definire meglio cosa intendi per avviare l'immagine?
Domanda. Con docker, non sarebbe meglio scaricare un pacchetto tarball di quest'applicazione, e poi fare manualmente i puntamenti?
Non sapevo dell'esistenza dei tarballs.
Mi indicheresti un punto da cui partire?
Cosa sono i puntamenti?
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Con sessione locale intendo, avvia il container sul tuo sistema linux, entra nell'immagine, e vedi se hai installato correttamente. Visto che scrivi su un forum tematico per linux, mi aspetto che tu abbia linux installato e funzionante, dunque, cosa succede, se avvii il container (scusa se l'ho chiamato immagine ! ) con il normale

Codice: Seleziona tutto

docker run --tty --interactive nome
?
Il pacchetto tarball al quale mi riferivo, nella domanda che ti ho fatto riguarda l'applicazione che cerchi di installare sul container. Esiste un pacchetto tarball di questa applicazione che cerchi di installare: "desktop-file-install", oppure "desktop-file-utils"?
I puntamenti, che si aggiornano con l'utility "update-alternatives" servono a dire al sistema cosa utilizzare, quandfo tu, oppure una qualunque applicazione di sistema invoca genericamente questo "desktop-file-install".
Avviare l'immagine in locale, sarebbe stato anche utile per sapere se php è stato installato correttamente. Non mi risulta che php sia parte del kernel ufficiale, e quindi potrebbe avere a sua volta bisogno di dipendenze od utility che gli permettano di funzionare regolarmente. Non conosco php, e non mi interessa installarlo, quindi le mie sono congetture.

Detto questo. Non parteciperò oltre a questa conversazione.

Buona fortuna.
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

corradoventu ha scritto:
venerdì 28 giugno 2024, 12:56
apt-get non è deprecato, ed è ovviamente mantenuto perchè è un comando (non un package) che fa parte del sistema, è solo meno comodo di apt.
apt è un package che usa apt-get per alcune funzioni.

Codice: Seleziona tutto

corrado@corrado-n03-oo-0626:~$ which apt-get
/usr/bin/apt-get

corrado@corrado-n03-oo-0626:~$ apt show apt
Package: apt
Version: 2.9.5
Priority: important
Build-Essential: yes
Section: admin
...................
Description: commandline package manager
 This package provides commandline tools for searching and
 managing as well as querying information about packages
 as a low-level access to all features of the libapt-pkg library.
 .
 These include:
  * apt-get for retrieval of packages and information about them
    from authenticated sources and for installation, upgrade and
    removal of packages together with their dependencies
  * apt-cache for querying available information about installed
    as well as installable packages
  * apt-cdrom to use removable media as a source for packages
  * apt-config as an interface to the configuration settings
  * apt-key as an interface to manage authentication keys

corrado@corrado-n03-oo-0626:~$ 
Grazie per le precisazioni
Computer: Lenovo ThinkPad L480
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

DoctorStrange ha scritto:
venerdì 28 giugno 2024, 16:24
Con sessione locale intendo, avvia il container sul tuo sistema linux, entra nell'immagine, e vedi se hai installato correttamente. Visto che scrivi su un forum tematico per linux, mi aspetto che tu abbia linux installato e funzionante, dunque, cosa succede, se avvii il container (scusa se l'ho chiamato immagine ! ) con il normale

Codice: Seleziona tutto

docker run --tty --interactive nome
?
Succede questo

Codice: Seleziona tutto

$ docker run --tty --interactive nome
Unable to find image 'nome:latest' locally
docker: Error response from daemon: pull access denied for nome, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Ma siccome sono costretto (a leggere nel pensiero), provo ad andare per intuito

Codice: Seleziona tutto

$ docker run --tty --interactive my-container
Unable to find image 'my-container:latest' locally
docker: Error response from daemon: pull access denied for my-container, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
Provo quindi a creare il container partendo dal Dockerfile da te suggerito

Codice: Seleziona tutto

$ cat Dockerfile 
FROM ubuntu:focal
RUN apt -y update && \
apt -y upgrade && \
apt -y install php && \
apt -y install desktop-file-utils && \
update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 && \
update-alternatives --set desktop-file-install  /full/path/desktop-file-install && \
echo update-alternatives --display desktop-file-install

$ docker build -t my-container .
blabla...
Setting up tzdata (2024a-0ubuntu0.20.04) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring tzdata
------------------

Please select the geographic area in which you live. Subsequent configuration
questions will narrow this down by presenting a list of cities, representing
the time zones in which they are located.

  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc
  2. America     5. Arctic     8. Europe    11. SystemV
  3. Antarctica  6. Asia       9. Indian    12. US
Geographic area: 8
^C
Premo 8 ma il processo si blocca e devo terminarlo premendo CTRL+C
Il pacchetto tarball al quale mi riferivo, nella domanda che ti ho fatto riguarda l'applicazione che cerchi di installare sul container. Esiste un pacchetto tarball di questa applicazione che cerchi di installare: "desktop-file-install", oppure "desktop-file-utils"?
È indifferente, purchè contenga il comando desktop-file-install
Computer: Lenovo ThinkPad L480
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Inserendo la direttiva ARG DEBIAN_FRONTEND=noninteractive nel file Dockerfile, ho risolto il problema della scelta della lingua.
Però c'è ancora qualcosa che non va (che non comprendo)

Codice: Seleziona tutto

+ cat Dockerfile
FROM ubuntu:focal
ARG DEBIAN_FRONTEND=noninteractive
RUN apt -y update \
&& apt -y upgrade \
&& apt -y install php desktop-file-utils \
&& update-alternatives \
    --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 \
&& update-alternatives \
    --set desktop-file-install /full/path/desktop-file-install \
&& echo update-alternatives \
    --display desktop-file-install

+ docker build -t ubuntu-php .
blabla...
74.14 update-alternatives: error: alternative path /full/path/desktop-file-install doesn't exist
------
Dockerfile:3
--------------------
   2 |     ARG DEBIAN_FRONTEND=noninteractive
   3 | >>> RUN apt -y update \
   4 | >>> && apt -y upgrade \
   5 | >>> && apt -y install php \
   6 | >>> && apt -y install desktop-file-utils \
   7 | >>> && update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 \
   8 | >>> && update-alternatives --set desktop-file-install /full/path/desktop-file-install \
   9 | >>> && echo update-alternatives --display desktop-file-install
  10 |     
--------------------
ERROR: failed to solve: process "/bin/sh -c apt -y update && apt -y upgrade && apt -y install php && apt -y install desktop-file-utils && update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 && update-alternatives --set desktop-file-install /full/path/desktop-file-install && echo update-alternatives --display desktop-file-install" did not complete successfully: exit code: 2

+ docker run --rm ubuntu-php -r echo system('/usr/bin/desktop-file-install --help');
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "-r": executable file not found in $PATH: unknown.

74.14 update-alternatives: error: alternative path /full/path/desktop-file-install doesn't exist


Quindi che path dovrei specificare?
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Il Dockerfile che io ti ho inviato, tu, logicamente, lo devi personalizzare.
In funzione, di quelli che sono i percorsi legittimi dei tuoi files.
Se io scrivo "/full/path/file" tu non ci devi lasciare questa stringa nel Dockerfile.
Devi mettere il reale percorso, di dove si trova ciò che devi installare.
Non ti si può spiegare anche che devi sostituire "/full/path" con il vero full path.
Un minimo di competenza pregressa, con Docker la devi avere, prima di fare configurazioni che sono un minimo custom.
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Il Dockerfile che io ti ho inviato, tu, logicamente, lo devi personalizzare.
Certamente
In funzione, di quelli che sono i percorsi legittimi dei tuoi files.
Ossia?
Se io scrivo "/full/path/file" tu non ci devi lasciare questa stringa nel Dockerfile.
Certamente
Devi mettere il reale percorso, di dove si trova ciò che devi installare.
Vorrei installare il comando php e il comando desktop-file-install (apt -y install php desktop-file-utils).

QUINDI

Dovrei specificare il reale percorso del file (del comando)... php ?
Oppure dovrei specificare il reale percorso del file (del comando)... desktop-file-install ?
Oppure entrambi.

Fammi capire!!!
Non ti si può spiegare anche che devi sostituire "/full/path" con il vero full path.
Si si si si si si si si si si si si si!!!
Come già detto, il vero full path (il percorso reale) di cosa?

PS: Tornando a qualche post più indietro
Il pacchetto tarball al quale mi riferivo, nella domanda che ti ho fatto riguarda l'applicazione che cerchi di installare sul container. Esiste un pacchetto tarball di questa applicazione che cerchi di installare: "desktop-file-install", oppure "desktop-file-utils"?
Ti rifersci a questi https://www.freedesktop.org/software/de ... /releases/
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Finalmente si comincia a capire qualcosa. Ora sappiamo dove si trova questo pacchetto che vuoi installare. Ciò che non avevi detto è che lui, a sua volta dipende da una serie di altre dipendenze. In ogni caso, questo è il docker file, almeno a me funziona. Buildaalo con la tua sessione locale di Docker e dimmi se hai problemi:

Codice: Seleziona tutto

FROM ubuntu:focal
SHELL ["/bin/bash", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN TZ=Europe/Rome && \
apt -y update && \
apt -y upgrade && \
apt -y install wget xz-utils meson gcc g++ build-essential pkg-config cmake libglib2.0-dev
WORKDIR /home

RUN mkdir -m 0777 file-utils

WORKDIR file-utils

RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.27.tar.xz && \
chmod 0777 desktop-file-utils-0.27.tar.xz && \
tar --extract --file desktop-file-utils-0.27.tar.xz --verbose && \
cd desktop-file-utils-0.27 && \
meson _build && \
ninja -C _build && \
ninja -C _build install

RUN echo "Setup cpmpleto"
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Codice: Seleziona tutto

+ cat Dockerfile
FROM ubuntu:focal
SHELL ["/bin/bash", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN TZ=Europe/Rome && \
apt -y update && \
apt -y upgrade && \
apt -y install wget xz-utils meson gcc g++ build-essential pkg-config cmake libglib2.0-dev
WORKDIR /home

RUN mkdir -m 0777 file-utils

WORKDIR file-utils

RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.27.tar.xz && \
chmod 0777 desktop-file-utils-0.27.tar.xz && \
tar --extract --file desktop-file-utils-0.27.tar.xz --verbose && \
cd desktop-file-utils-0.27 && \
meson _build && \
ninja -C _build && \
ninja -C _build install

RUN echo "Setup cpmpleto"+ docker build -t ubuntu-php .
[+] Building 98.3s (11/11) FINISHED                                                                     docker:default
 => [internal] load build definition from Dockerfile                                                              0.0s
 => => transferring dockerfile: 770B                                                                              0.0s
 => [internal] load metadata for docker.io/library/ubuntu:focal                                                   0.0s
 => [internal] load .dockerignore                                                                                 0.0s
 => => transferring context: 2B                                                                                   0.0s
 => CACHED [1/7] FROM docker.io/library/ubuntu:focal                                                              0.0s
 => [2/7] RUN TZ=Europe/Rome && apt -y update && apt -y upgrade && apt -y install wget xz-utils meson gcc g++ b  91.2s
 => [3/7] WORKDIR /home                                                                                           0.0s 
 => [4/7] RUN mkdir -m 0777 file-utils                                                                            0.3s 
 => [5/7] WORKDIR file-utils                                                                                      0.0s 
 => [6/7] RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.27.tar.  3.3s 
 => [7/7] RUN echo "Setup cpmpleto"                                                                               0.3s 
 => exporting to image                                                                                            3.0s 
 => => exporting layers                                                                                           3.0s 
 => => writing image sha256:ef289ea1cd8cf14545b0ef6aed230abf43996645c6a32461a7645c3ee20f5634                      0.0s 
 => => naming to docker.io/library/ubuntu-php                                                                     0.0s 
+ docker run --rm ubuntu-php php -r 'echo system('\''/usr/bin/desktop-file-install --help'\'');'                       
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "php": executable file not found in $PATH: unknown.
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Sostituisci il tuo comando docker run, con uno generalista. Mettiti con un terminale al path dove hai messo il Dockerfile che ti ho dato io, e poi:

Codice: Seleziona tutto

docker build --tag test1 . && docker run --tty --interactive test1
E comunque l'errore sembra essere attinente al php nella tua immagine Docker.
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Sostituisci il tuo comando docker run, con uno generalista
????
Mettiti con un terminale al path dove hai messo il Dockerfile che ti ho dato io, e poi:

Codice: Seleziona tutto

$ docker build --tag test1 . && docker run --rm --tty --interactive test1
[+] Building 0.1s (11/11) FINISHED                                                                      docker:default
 => [internal] load build definition from Dockerfile-v2                                                           0.0s
 => => transferring dockerfile: 720B                                                                              0.0s
 => [internal] load metadata for docker.io/library/ubuntu:focal                                                   0.0s
 => [internal] load .dockerignore                                                                                 0.0s
 => => transferring context: 2B                                                                                   0.0s
 => [1/7] FROM docker.io/library/ubuntu:focal                                                                     0.0s
 => CACHED [2/7] RUN TZ=Europe/Rome && apt -y update && apt -y upgrade && apt -y install wget xz-utils meson gcc  0.0s
 => CACHED [3/7] WORKDIR /home                                                                                    0.0s
 => CACHED [4/7] RUN mkdir -m 0777 file-utils                                                                     0.0s
 => CACHED [5/7] WORKDIR file-utils                                                                               0.0s
 => CACHED [6/7] RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.  0.0s
 => CACHED [7/7] RUN echo "Setup cpmpleto"                                                                        0.0s
 => exporting to image                                                                                            0.0s
 => => exporting layers                                                                                           0.0s
 => => writing image sha256:ef289ea1cd8cf14545b0ef6aed230abf43996645c6a32461a7645c3ee20f5634                      0.0s
 => => naming to docker.io/library/test1                                                                          0.0s
root@d59c0c1fda78:/home/file-utils# php --version
bash: php: command not found
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

La creazione dell'immagine ed il run funzionano correttamente.
Entri nella shell dell'immagine in esecuzione e cerchi php, che non trova.
Logico. Non lo ho installato nell'immagine, quindi non esiste,
In reatà credevo fosse parte del kernel di sistema. Evidentemente non è cosi,
A questo punto puoi immaginare da solo cosa tu debba fare.
Devi installare php, configurarlo e predisporre i puntamenti di sistema.
Puoi quindi proseguire da solo.
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Codice: Seleziona tutto

$ cat Dockerfile-v2
FROM ubuntu:focal
SHELL ["/bin/bash", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN TZ=Europe/Rome && \
apt -y update && \
apt -y upgrade && \
apt -y install wget xz-utils meson gcc g++ build-essential pkg-config cmake libglib2.0-dev \
    php desktop-file-utils \
    && update-alternatives \
        --install /usr/bin/desktop-file-install desktop-file-install /full/path/desktop-file-install 1 \
    && update-alternatives \
        --set desktop-file-install /full/path/desktop-file-install \
    && echo update-alternatives \
        --display desktop-file-install

WORKDIR /home

RUN mkdir -m 0777 file-utils

WORKDIR file-utils

RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.27.tar.xz && \
chmod 0777 desktop-file-utils-0.27.tar.xz && \
tar --extract --file desktop-file-utils-0.27.tar.xz --verbose && \
cd desktop-file-utils-0.27 && \
meson _build && \
ninja -C _build && \
ninja -C _build install

RUN echo "Setup completo"

$ docker build -f Dockerfile-v2 -t ubuntu-php .
BLABLA...
update-alternatives: error: alternative path /full/path/desktop-file-install doesn't exist
Dimmi quello che vuoi, ma questi dannati puntamenti non li so impostare (ti rimando a qualche post precedente)
Ultima modifica di london3 il giovedì 25 luglio 2024, 15:43, modificato 1 volta in totale.
Computer: Lenovo ThinkPad L480
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

Se vuoi modificare Dockerfile, devi essere consapevole delle modifiche che fai.
Hai aggiunto nella lista di pacchetti da installare con apt, anche questo famigerato "desktop-file-utils".
Poco sotto poi, hai lasciato immutata la procedura che scarica il medesimo pacchetto, lo estrae e lo installa segendo le istruzioni del suo stesso README.
A questo punto non so come risulti l'immagine docker cosi generata. Hai installato, due volte, il medesimo pacchetto.
Non ne capisco il motivo. Tu stesso, qualche messaggio sopra, hai indicato l'archivio dove si trovano i pacchetti tarball di questa applicazione.
In particolare, mi riferisco a questo link che tu stesso hai postato: https://www.freedesktop.org/software/de ... /releases/.
Per quanto riguarda riguarda i puntamenti, il problema lo puoi risolvere semplicemente. Leggi la documentazione.
Puoi leggere la documentazione ufficiale di update-alternatives, od una tra i milioni di guide che ci sono su internet, e che io non ho voglia di cercare per te.
Detto questo, con una breve ricerca sull'immagine Docker generata dal Dockerfile, scoprirai che questo pacchetto che ti interessa: desktop-file-install, e le due applicazioni affini: desktop-file validate e la terza che non ricordo come si chiama, predispongono già un puntamento di sistema, se non sbaglio su /usr/lib/..... .
Se hai qualche motivo specifico per cambiare questo puntamente con uno personalizzato, allora prima dovrai rimuovere questo, usando "update-alternatives --remove-all" e, solo dopo, potrai predisporre il nuovo puntamento.
Per quanto riguarda php, anche qui controlla come sia configurato. Se il puntamento a php non è impostato nello userbin di sistema, puoi farlo tu, altrimenti, se credi che funzioni regolarmente senza alterazioni, hai risolto tutti i problemi.

Buona fortuna.
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3034
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: [docker][php] eseguire comando ubuntu

Messaggio da DoctorStrange »

E' piu forte di me. Devo vedere completa questa immagine. Prova cosi. A me funziona tutto:

Codice: Seleziona tutto

FROM ubuntu:focal
SHELL ["/bin/bash", "-c"]
ARG DEBIAN_FRONTEND=noninteractive
ENV DEBIAN_FRONTEND=noninteractive
RUN TZ=Europe/Rome && \
apt -y update && \
apt -y upgrade && \
apt -y install wget xz-utils meson gcc g++ build-essential pkg-config cmake libglib2.0-dev php
WORKDIR /home

RUN mkdir -m 0777 file-utils

WORKDIR file-utils

RUN wget https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-0.27.tar.xz && \
chmod 0777 desktop-file-utils-0.27.tar.xz && \
tar --extract --file desktop-file-utils-0.27.tar.xz --verbose && \
cd desktop-file-utils-0.27 && \
meson _build && \
ninja -C _build && \
ninja -C _build install && \
update-alternatives --install /usr/bin/desktop-file-install desktop-file-install /usr/local/bin/desktop-file-install 1 && \
update-alternatives --install /usr/bin/desktop-file-validate desktop-file-validate /usr/local/bin/desktop-file-validate 1 && \
update-alternatives --install /usr/bin/update-desktop-database update-desktop-database /usr/local/bin/update-desktop-database 1 && \
update-alternatives --set desktop-file-install /usr/local/bin/desktop-file-install && \
update-alternatives --set desktop-file-validate /usr/local/bin/desktop-file-validate && \
update-alternatives --set update-desktop-database /usr/local/bin/update-desktop-database && \
update-alternatives --remove-all php && \
update-alternatives --install /usr/bin/php php /usr/bin/php7.4 1 && \
update-alternatives --set php /usr/bin/php7.4;

RUN echo "Setup cpmpleto"
Avatar utente
london3
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 565
Iscrizione: domenica 19 gennaio 2014, 16:22
Desktop: ubuntu:GNOME
Distribuzione: Ubuntu 22.04.1 LTS

Re: [docker][php] eseguire comando ubuntu

Messaggio da london3 »

Ho semplificato di molto il Dockerfile

Codice: Seleziona tutto

FROM ubuntu:focal
ARG DEBIAN_FRONTEND=noninteractive

RUN apt -y update \
&& apt -y upgrade \
&& apt -y install php desktop-file-utils
Proviamo

Codice: Seleziona tutto

++ docker build -t php-dfu .
[+] Building 0.1s (6/6) FINISHED                                                                        docker:default

++ docker run --rm php-dfu which php desktop-file-install
/usr/bin/php
/usr/bin/desktop-file-install
Sembra funzionare.

I comandi php e desktop-file-install, come vedi, sono disponibili.
I rispettivi file, come vedi, sono:
  • /usr/bin/php
    /usr/bin/desktop-file-install
Sembra tutto OK.
Senza scaricare (e decomprimere) file manualmente, senza creare puntamenti, senza creare directory, e senza stranezze varie: tarball, immagini da avviare (????), ecc.

Tutto sembra pulito e funzionante.

Adesso mi chiedo se posso tirare un sospiro di sollievo, o mi devo aspettare qualche imprevisto?
Che dici?
Computer: Lenovo ThinkPad L480
Scrivi risposta

Ritorna a “Strumenti per la programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti