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

4

我有一个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

在这个文件中,有没有一种方法可以编写mkdirchmod命令?


mkdir和chmod是用来做什么的? - LinPy
@LinPy 在运行 docker-compose up 后创建目录的方法是: - Burak
1个回答

6
您不需要手动创建和设置mod,只需将目录名称传递给CMD即可,entrypoint会为您创建一个。以下是最简单的示例。
在docker-compose中使用:

可以在(1)命令参数、(2)SFTP_USERS环境变量或(3)挂载为/etc/sftp/users.conf文件中定义用户(语法:user:pass[:e][:uid[:gid[:dir1[,dir2]...]]] ...,请参见下面的示例)

sftp:
  image: atmoz/sftp
  command: username:password:100:100:upload

该操作会在/home/username下创建用户名为username的用户和名为upload的目录。

您可以使用以下方式进行验证:

docker exec -it --user username <container_id> bash -c "ls /home/username"

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

sftp:
  image: atmoz/sftp
  command: username:password:100:100:upload
  volumes:
        - /host/upload:/home/username/upload

示例

最简单的Docker运行示例

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

用户"foo"使用密码"pass"可以使用sftp登录并将文件上传到名为"upload"的文件夹中。没有挂载的目录或自定义UID/GID。稍后,您可以检查文件并使用--volumes-from在其他地方挂载它们(或查看下一个示例)。

请参阅官方文档


能否用这种方式创建其他目录,比如上传文件夹? - Burak
从文档中看起来是可以的,你可以尝试使用 user:pass[:e][:uid[:gid[:dir1[,dir2]...]]]。根据文档,“如果目录不存在,则在用户的主目录下创建具有写入权限的目录名称”。 - Adiii
@Burak,你是如何以那种方式创建目录的?你能提供一个例子吗? - codeSeeker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接