在 docker-compose.yml 文件中创建一个目录

Bur*_*rak 4 docker docker-compose

我有一个 docker-compose yml,可以在我的 docker 上创建 sftp 映像。我想在 yml 文件中编写一个脚本,因为我希望在运行 docker-compose.yml 时自动创建目录。

这是我的 yml 文件;

sftp:
  image: atmoz/sftp
  volumes:
    - C:\tmp\sftp:/home/foo/upload
  ports:
    - "2222:22"
  command: username:password:1001
Run Code Online (Sandbox Code Playgroud)

有没有办法在这个文件中写入mkdirand chmod

Adi*_*iii 6

您不需要手动创建和设置 mod,只需将目录名称传递给CMD,入口点就会为您创建一个。这是最简单的例子。

在 (1) command arguments、 (2)SFTP_USERS环境变量或 (3) 安装的文件中定义用户/etc/sftp/users.conf(语法: user:pass[:e][:uid[:gid[:dir1[,dir2]...]]] ...,请参阅下面的示例)

使用 docker-compose

sftp:
  image: atmoz/sftp
  command: username:password:100:100:upload
Run Code Online (Sandbox Code Playgroud)

它将在下创建用户名username和目录上传/home/username 您可以使用以下命令验证这一点

docker exec -it --user username <container_id> bash -c "ls /home/username"
Run Code Online (Sandbox Code Playgroud)

如果您想从主机访问上传文件,只需在 docker-compose 中添加挂载

sftp:
  image: atmoz/sftp
  command: username:password:100:100:upload
  volumes:
        - /host/upload:/home/username/upload
Run Code Online (Sandbox Code Playgroud)

例子

最简单的 docker 运行示例

docker run -p 22:22 -d atmoz/sftp foo:pass:::upload

Run Code Online (Sandbox Code Playgroud)

用户“foo”和密码“pass”可以使用sftp登录并将文件上传到名为“upload”的文件夹。没有安装目录或自定义 UID/GID。稍后您可以检查文件并使用 --volumes-from 将它们安装在其他位置(或参见下一个示例)。

查看官方文档