私のローカルワークステーションにNixOS 22.11がインストールされています。
私は使う追加コンテナシステムを再構築しなくても、命令型コンテナなどの宣言型NixOSコンテナを実行できるパッケージです。
デモコンテナを実行しようとしています。コンテナ内にダウンロードされ圧縮されておりwoocommerce
、コンテナとローカルシステムパス間でこれらのファイルを同期したいと思います。主な目的は、nixをよりよく学ぶことです。 docker-composeでは、次の設定を使用できます。
volumes:
- <local-path>:<container-path>
NixOSコンテナでこれをどのように実装しますか?
次の設定を試しましたが、ローカルシステムディレクトリはまだ空です。
fileSystems."/var/www/demo/wp-content/plugins/woocommerce" = {
device = "/root/woocommerce";
options = [ "bind" ];
# noCheck = true;
};
};
serviceConfig = {
BindPaths = [ "/var/www/demo/wp-content/plugins/woocommerce:/root/woocommerce" ]
};
全体構成woo.nix
{ pkgs, ... }:
{
containers.demo = {
config = {
fileSystems."/var/www/demo/wp-content/plugins/woocommerce" = {
device = "/root/woocommerce";
options = [ "bind" ];
# noCheck = true;
};
users.users.demo = {
isSystemUser = true;
createHome = true;
group = "demo";
};
users.groups.demo = { };
systemd.services.woo = {
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ coreutils wget gzip curl unzip ];
script = ''
/run/current-system/sw/bin/curl -L https://downloads.wordpress.org/plugin/woocommerce.7.4.1.zip -o /root/woocommerce.zip &&
unzip /root/woocommerce.zip -d /root &&
rm /root/woocommerce.zip
'';
serviceConfig = {
BindPaths = [ "/var/www/demo/wp-content/plugins/woocommerce:/root/woocommerce" ];
# ReadWriteDirectories = [ "/root/woocommerce" ];
};
};
};
};
environment.systemPackages = [ pkgs.coreutils pkgs.wget pkgs.gzip pkgs.curl pkgs.unzip ];
}
次のコマンドで実行します。
sudo extra-container create --start <<EOF
$(cat woo.nix)
EOF
NixOS宣言コンテナとローカルシステム間でファイルを同期する最良の方法は何ですか?
ベストアンサー1
このbindMounts
オプションは私に必要なものです。
containers.demo = {
bindMounts = {
"/root/woocommerce" = {
hostPath = "/var/www/demo/wp-content/plugins/woocommerce";
isReadOnly = false;
};
};
}