deleter mysql,如何通过env文件传递docker中的环境变量?

鉴于此Dockerfile:

FROM alpine:3.7

ENV LAST_UPDATED=2018-02-22

ARG XDG_CACHE_HOME=/tmp/cache/

RUN apk update && \n apk add libxslt && \n apk add sed && \n apk add py-pip && \n apk add mariadb-client && \n apk add bash bash-doc bash-completion && \n pip install httpie && \n rm -rf /var/cache/apk/*

WORKDIR /usr/deleter/

COPY delete.sh ./

ENTRYPOINT ["/usr/deleter/delete.sh"]

我希望能够通过带有ke??y = value格式的.env文件传递多个变量.

$cat stage.env

MYSQL_DATABASE=database

MYSQL_HOST=127.0.0.1:3306

MYSQL_PASSWORD=password

MYSQL_PORT=3306

MYSQL_USER=a_user

我的delete.sh只是这样:

#!/bin/bash

set -e

set -o pipefail

echo "hello world"

echo ${MYSQL_DATABASE} ${MYSQL_HOST} ${MYSQL_PASSWORD} ${MYSQL_PORT} ${MYSQL_USER}

echo "ALL VARIABLES"

env

我期望看到env变量,但它们都是空的. –env-file选项似乎无法正常工作.脚本的输出是:

hello world

ALL VARIABLES

HOSTNAME=f52c5c2aa22b

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PWD=/usr/deleter

LAST_UPDATED=2018-02-22

SHLVL=1

HOME=/root

_=/usr/bin/env

我通过以下方式创建并运行docker容器:

docker build -t deleter:local

docker run deleter:local --env-file stage.env

我试过–env-file stage.env, – env-file = stage.env, – env-file ./stage.env,但我没有看到任何被包含的内容或任何抛出的错误.我也用绝对路径尝试过它.

stage.env与我的Dockerfile处于同一级别.

env文件是有效的,我可以在我的本地机器上获取它,访问那里的变量.

我的错误在哪里?

在Java,`File.delete()` 方法用于删除指定路径下的文件,如果该文件存在。然而,如果你想要删除服务器的所有文件,这通常涉及到遍历整个目录树,并逐个删除其文件。由于服务器环境通常是远程的,直接在客户端代码操作可能会有权限限制或者网络问题,所以这种操作通常是在服务器端通过Shell脚本或者服务程序来完成。 这是一个简单的示例,假设你已经获得了服务器的文件访问权限: ```java import java.io.File; import java.io.IOException; public class ServerFileDeleter { private String serverDirectory; // 服务器文件路径 public void deleteAllFiles(String username, String password) throws IOException { // 首先,使用SFTP、Socket连接或其它方式登录服务器 // 这部分依赖于具体的库如JSch(SFTP)、SSLSocket等 // 假设我们有一个连接对象 `sftpConnection` File serverBaseDir = new File(serverDirectory); if (serverBaseDir.exists()) { for (File file : serverBaseDir.listFiles()) { if (file.isFile()) { try { sftpConnection.executeCommand("rm " + file.getAbsolutePath()); // 假设delete命令的实现 } catch (Exception e) { // 处理异常,比如权限不足 System.err.println("Failed to delete file: " + file.getAbsolutePath()); } } } } } // 使用方法前需要验证权限和连接状态 } // 调用示例: ServerFileDeleter deleter = new ServerFileDeleter(); try { deleter.deleteAllFiles("your_username", "your_password"); } catch (IOException e) { e.printStackTrace(); } ``` 注意:这个例子仅提供了一个基本思路,实际应用你需要处理更多的细节,例如错误处理、安全性和效率等问题。同时,直接在Java代码删除远程服务器上的文件并不常见,通常会使用专门的运维工具进行这样的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值