Как установить PHP Composer через Docker и использовать, как если бы он был установлен локально?

В пандах это не так. Создание некоторых фиктивных фреймов данных:

>>> import pandas as pd
>>> e10_all = pd.DataFrame({"A": [1,2], "B": [2,3], "C": [2,3]})
>>> e11_all = pd.DataFrame({"B": [4,5], "C": [5,6]})
>>> e12_all = pd.DataFrame({"B": [1,2], "C": [3,4], "M": [8,9]})

Затем ваш код переводится на что-то вроде

>>> list_df = [e10_all, e11_all, e12_all]
>>> col_common = set.intersection(*(set(df.columns) for df in list_df))
>>> col_common
{'C', 'B'}
>>> ','.join(sorted(col_common))
'B,C'

. Вторая строка превращает каждый из столбцов фреймов в набор, а затем берет пересечение всех из них. Более буквальный перевод вашего кода тоже будет работать, хотя мы склонны избегать написания циклов, где мы можем его избежать, и мы склонны напрямую перебирать элементы (for df in list_df[1:]:) вместо перехода через индекс. Тем не менее,

col_common = set(list_df[0].columns)
for i in range(1, len(list_df)):
    col_common = col_common.intersection(list_df[i].columns)

выполнит эту работу.

-1
задан Danielli 25 January 2019 в 08:58
поделиться

1 ответ

Я наконец понял это; в случае, если кто-то пытается добиться того же самого, у вас есть две возможности:

  1. Доступ к php bash контейнера (с помощью docker exec -it <container name> /bin/bash и перейдите в папку, на которой вы хотите использовать Composer. и запустите команды composer. Также может быть полезно отметить, что docker-compose run <container name> ls покажет подключенные тома контейнера (если вы хотите проверить / убедиться).
  2. Выполните следующие команды в терминале macos, чтобы иметь возможность использовать composer, как если бы он был установлен локально:
#!/bin/bash
mkdir ~/.functions
echo '#!/bin/bash
tty=
tty -s && tty=--tty
docker run \
    $tty \
    --interactive \
    --rm \
    --user $(id -u):$(id -g) \
    --workdir /var/www/html/${PWD##*/} \
    --volume /etc/passwd:/etc/passwd:ro \
    --volume /etc/group:/etc/group:ro \
    --volume $(pwd):/var/www/html/${PWD##*/} \
    composer "$@"' > ~/.functions/composer
echo 'alias composer="sh ~/.functions/composer"' >> ~/.bash_profile
source ~/.bash_profile

Затем в терминале попробуйте composer version, чтобы увидеть, работает ли он, если нет, попробуйте выполнить source ~/.bash_profile еще раз, и повторите попытку .

Надеюсь, это поможет!

0
ответ дан Danielli 25 January 2019 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: