[英]Create a directory in docker-compose.yml file
我有一个 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
有没有办法在这个文件中写入mkdir
和chmod
?
您不需要手动创建和设置 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
它将在/home/username
下创建用户名username
和目录上传您可以使用验证这一点
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
密码为“pass”的用户“foo”可以使用 sftp 登录并将文件上传到名为“upload”的文件夹。 没有安装目录或自定义 UID/GID。 稍后您可以检查文件并使用 --volumes-from 将它们挂载到其他地方(或参见下一个示例)。
见官方文档
试试这个,然后 append 你的命令到command
列表
version: "3.7"
services:
sftp:
image: atmoz/sftp
volumes:
- C:\tmp\sftp:/home/foo/upload
ports:
- "2222:22"
command: ["/bin/bash", "-c", "mkdir -p /home/foo/upload/test1 && chmod 755 /home/foo/upload/test1 && username:password:1001"]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.