Как очистить временные файлы после выполнения внутри скрипта точки входа?

Вы можете использовать это, если хотите сохранить его в фрейме данных:

df['new'] = df.values.tolist()

>>> df
   A  B     new
0  1  2  [1, 2]
1  3  4  [3, 4]
2  5  6  [5, 6]

В противном случае, если вам просто нужны списки, просто используйте:

df.values.tolist()

[[1, 2], [3, 4], [5, 6]]

Или даже просто df.values (хотя результатом будет массив numpy, а не список списков):

>>> df.values
array([[1, 2],
       [3, 4],
       [5, 6]])
0
задан SkyRar 19 January 2019 в 23:18
поделиться

2 ответа

Я думаю, что trap является лучшим решением для этого

function interrupt(){

    local dir=$1
    [ -e ${dir} ] && rm -rf ${dir}
    exit 128
}
TMP_DIR=$(mktemp -d /tmp/entrypoint.XXXX)
trap "interrupt ${TMP_DIR}" SIGINT SIGTERM
trap "rm -rf ${TMP_DIR}" EXIT

set -ex
{
    echo  "CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';"
    echo  "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};"
    echo  "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%';"
} > ${TMP_DIR}/mysqld-init.sql

exec $@ --init-file="${TMP_DIR}/mysqld-init.sql"
0
ответ дан Yuri G. 19 January 2019 в 23:18
поделиться

Используйте tini для решения этой проблемы с сигналом и процессом зомби.

FROM alpine:edge

RUN set -ex \
    && apk add --no-cache mariadb mariadb-client tini \
    && mkdir -p /run/mysqld \
    && chown -R mysql:mysql /run/mysqld \
    && ln -snf /usr/lib/mariadb /usr/lib/mysql \
    && mysql_install_db --user=mysql --skip-name-resolve --auth-root-authentication-method=socket --auth-root-socket-user=root --force --rpm --skip-test-db

COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 3306

CMD ["mysqld"]

entrypoint.sh

if [ ! -p "/tmp/mysqld.init" ]; then
    mkfifo /tmp/mysqld.init
fi

{
    echo  "CREATE USER IF NOT EXISTS '${MYSQL_USER}'@'%' IDENTIFIED BY '${MYSQL_PASSWORD}';"
    echo  "CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE};"
    echo  "GRANT ALL ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'%';"
} > /tmp/mysqld.init &

    exec tini -g -- "$@" --init-file="/tmp/mysqld.init"
0
ответ дан 19 January 2019 в 23:18
поделиться
Другие вопросы по тегам:

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