Bump container to Ubuntu 22.04

This commit is contained in:
claude Bot committed 2026-11-07 18:01:56 +00:00
1 parent 82dd148563
commit e082209bd2
3 files changed
+22 -312

No files matched your search

-308
View File
@@ -1,308 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AutoImportSettings">
<option name="autoReloadType" value="ALL" />
</component>
<component name="CMakeSettings">
<configurations>
<configuration PROFILE_NAME="Debug" ENABLED="true" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="CargoProjects">
<cargoProject FILE="$PROJECT_DIR$/Cargo.toml">
<package file="$PROJECT_DIR$">
<feature name="default" enabled="true" />
</package>
</cargoProject>
</component>
<component name="ChangeListManager">
<list default="true" id="52900e09-9584-4b6c-95ff-fbd4ed5d8b2c" name="Changes" comment="Add interface package. Start adding auth stuff for refreshing tokens.">
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/daemon/update_playlists.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/daemon/update_playlists.rs" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/listenbrainz.rs" beforeDir="false" afterPath="$PROJECT_DIR$/src/listenbrainz.rs" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ClangdSettings">
<option name="formatViaClangd" value="false" />
</component>
<component name="EmbeddingIndexingInfo">
<option name="cachedIndexableFilesCount" value="55" />
<option name="fileBasedEmbeddingIndicesEnabled" value="true" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="RsBuildProfile:dev" />
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Rust File" />
</list>
</option>
</component>
<component name="FormatOnSaveOptions">
<option name="myRunOnSave" value="true" />
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="MacroExpansionManager">
<option name="directoryName" value="u4q8xqsl" />
</component>
<component name="MarkdownSettingsMigration">
<option name="stateVersion" value="1" />
</component>
<component name="McpProjectServerCommands">
<commands />
<urls />
</component>
<component name="NextEditCompletionFeaturesState">
<decayedCancelled>
<entry key="MS100" value="1.7832100461155516E-49" />
<entry key="MS500" value="1.779264445376079E-10" />
<entry key="S2" value="0.003652247521800762" />
<entry key="S5" value="0.10614339261181734" />
<entry key="S10" value="0.34003735252927425" />
<entry key="S30" value="1.0141819772215594" />
<entry key="S60" value="2.6976232295670823" />
<entry key="M2" value="7.235293047806507" />
<entry key="M5" value="14.947740695354689" />
<entry key="M10" value="21.02881866903945" />
<entry key="M15" value="28.317060210937925" />
<entry key="M30" value="53.26114480046425" />
<entry key="H1" value="85.7690309902811" />
<entry key="H2" value="112.72845131338053" />
<entry key="H4" value="130.1882968053762" />
<entry key="D1" value="147.2723769995884" />
<entry key="W1" value="150.46076637067708" />
</decayedCancelled>
<decayedSelected>
<entry key="MS100" value="1.0" />
<entry key="MS500" value="1.0" />
<entry key="S2" value="1.0000049403229003" />
<entry key="S5" value="1.0091309729890607" />
<entry key="S10" value="1.1271614733862405" />
<entry key="S30" value="1.7861806484453573" />
<entry key="S60" value="2.2514830516727353" />
<entry key="M2" value="2.581298838268658" />
<entry key="M5" value="2.820735662670735" />
<entry key="M10" value="2.9330735250313964" />
<entry key="M15" value="3.045973523232095" />
<entry key="M30" value="3.4330893462953656" />
<entry key="H1" value="3.94793113496648" />
<entry key="H2" value="4.380377629877762" />
<entry key="H4" value="4.662338988235804" />
<entry key="D1" value="4.939407224543" />
<entry key="W1" value="4.991231810430241" />
</decayedSelected>
<decayedShown>
<entry key="MS100" value="0.014680042956468931" />
<entry key="MS500" value="0.4298782432672315" />
<entry key="S2" value="0.8131974375944065" />
<entry key="S5" value="1.0260655929325786" />
<entry key="S10" value="1.3691875685363921" />
<entry key="S30" value="2.6468546225018925" />
<entry key="S60" value="4.8229190871623215" />
<entry key="M2" value="9.734676535071735" />
<entry key="M5" value="17.729990071329567" />
<entry key="M10" value="23.94139714757257" />
<entry key="M15" value="31.348735575722195" />
<entry key="M30" value="56.68614182340377" />
<entry key="H1" value="89.71231876108209" />
<entry key="H2" value="117.10626038721348" />
<entry key="H4" value="134.84927155802265" />
<entry key="D1" value="152.21154380465404" />
<entry key="W1" value="155.4519634874815" />
</decayedShown>
</component>
<component name="ProjectColorInfo">{
&quot;associatedIndex&quot;: 2
}</component>
<component name="ProjectId" id="2TwLYTFaOXHKmGf9lC3ltOC00Kl" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Cargo.Run.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.MCP Project settings loaded&quot;: &quot;true&quot;,
&quot;RunOnceActivity.OpenProjectViewOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
&quot;RunOnceActivity.cidr.known.project.marker&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;RunOnceActivity.rust.reset.selective.auto.import&quot;: &quot;true&quot;,
&quot;RunOnceActivity.typescript.service.memoryLimit.init&quot;: &quot;true&quot;,
&quot;WebServerToolWindowFactoryState&quot;: &quot;false&quot;,
&quot;cf.first.check.clang-format&quot;: &quot;false&quot;,
&quot;cidr.known.project.marker&quot;: &quot;true&quot;,
&quot;codeWithMe.voiceChat.enabledByDefault&quot;: &quot;false&quot;,
&quot;com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;junie.onboarding.icon.badge.shown&quot;: &quot;true&quot;,
&quot;last_opened_file_path&quot;: &quot;/home/jude/Documents/navidrome-playlists&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;org.rust.cargo.project.model.PROJECT_DISCOVERY&quot;: &quot;true&quot;,
&quot;org.rust.cargo.project.model.impl.CargoExternalSystemProjectAware.subscribe.first.balloon&quot;: &quot;&quot;,
&quot;org.rust.disableDetachedFileInspection/home/jude/navidrome-playlists/navidrome/src/client/mod.rs&quot;: &quot;true&quot;,
&quot;org.rust.disableDetachedFileInspection/home/jude/navidrome-playlists/navidrome/src/client/playlists.rs&quot;: &quot;true&quot;,
&quot;org.rust.disableDetachedFileInspection/home/jude/navidrome-playlists/navidrome/src/lib.rs&quot;: &quot;true&quot;,
&quot;org.rust.disableDetachedFileInspection/home/jude/navidrome-playlists/navidrome/src/models.rs&quot;: &quot;true&quot;,
&quot;org.rust.first.attach.projects&quot;: &quot;true&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;language.rust.cargo.check&quot;,
&quot;to.speed.mode.migration.done&quot;: &quot;true&quot;,
&quot;ts.external.directory.path&quot;: &quot;/home/jude/Documents/navidrome-playlists/app/node_modules/typescript/lib&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
},
&quot;keyToStringList&quot;: {
&quot;DatabaseDriversLRU&quot;: [
&quot;postgresql&quot;
],
&quot;com.intellij.ide.scratch.LRUPopupBuilder$1/SQL Dialect&quot;: [
&quot;PostgreSQL&quot;
]
}
}</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/src/daemon" />
<recent name="$PROJECT_DIR$/navidrome/src/client" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/etc/playlistd" />
<recent name="$PROJECT_DIR$/src/daemon" />
<recent name="$PROJECT_DIR$/navidrome/src/models" />
</key>
</component>
<component name="RunManager">
<configuration name="Run" type="CargoCommandRunConfiguration" factoryName="Cargo Command" nameIsGenerated="true">
<option name="command" value="run" />
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
<envs>
<env name="DATABASE_URL" value="postgres:///navidrome-playlists" />
<env name="LISTENBRAINZ_USER" value="jellywx" />
<env name="SUBSONIC_BASE" value="https://navidrome.jellypro.xyz/rest" />
<env name="SUBSONIC_PASSWORD" value="u7P4xQYZEvC9pFva" />
<env name="SUBSONIC_USERNAME" value="jude" />
<env name="DAEMON_INTERVAL" value="240" />
</envs>
<option name="emulateTerminal" value="false" />
<option name="channel" value="DEFAULT" />
<option name="requiredFeatures" value="true" />
<option name="allFeatures" value="false" />
<option name="withSudo" value="false" />
<option name="buildTarget" value="REMOTE" />
<option name="backtrace" value="SHORT" />
<option name="isRedirectInput" value="false" />
<option name="redirectInputPath" value="" />
<method v="2">
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
</method>
</configuration>
</component>
<component name="RustProjectSettings">
<option name="toolchainHomeDirectory" value="$USER_HOME$/.cargo/bin" />
</component>
<component name="RustfmtProjectSettings">
<option name="runRustfmtOnSave" value="true" />
<option name="useRustfmt" value="true" />
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="52900e09-9584-4b6c-95ff-fbd4ed5d8b2c" name="Changes" comment="" />
<created>1691949245312</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1691949245312</updated>
<workItem from="1691949248703" duration="4525000" />
<workItem from="1692003763542" duration="5103000" />
<workItem from="1692042976149" duration="10055000" />
<workItem from="1694271920428" duration="9295000" />
<workItem from="1694285959491" duration="2278000" />
<workItem from="1694290396939" duration="1743000" />
<workItem from="1694333344521" duration="1478000" />
<workItem from="1694450589184" duration="2108000" />
<workItem from="1694534880857" duration="6060000" />
<workItem from="1694621211523" duration="3713000" />
<workItem from="1708962769688" duration="6050000" />
<workItem from="1710605458078" duration="1011000" />
<workItem from="1710677603495" duration="13803000" />
<workItem from="1710872266453" duration="225000" />
<workItem from="1713283733149" duration="180000" />
<workItem from="1713283935337" duration="13390000" />
<workItem from="1713372315382" duration="4924000" />
<workItem from="1713385358427" duration="2705000" />
<workItem from="1713465993328" duration="1750000" />
<workItem from="1713469457285" duration="6588000" />
<workItem from="1713609379678" duration="7216000" />
<workItem from="1713639881551" duration="577000" />
<workItem from="1716043707662" duration="542000" />
<workItem from="1716046070333" duration="1484000" />
<workItem from="1716640392358" duration="367000" />
<workItem from="1716642009543" duration="1546000" />
<workItem from="1716650511971" duration="14000" />
<workItem from="1723834879628" duration="4208000" />
<workItem from="1758303664979" duration="1688000" />
<workItem from="1768333949616" duration="1336000" />
<workItem from="1768335441947" duration="213000" />
<workItem from="1781027103068" duration="90000" />
<workItem from="1781027311696" duration="3180000" />
<workItem from="1781547110087" duration="406000" />
</task>
<task id="LOCAL-00001" summary="Structure">
<created>1692008860369</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1692008860369</updated>
</task>
<task id="LOCAL-00002" summary="Track media server songs list">
<option name="closed" value="true" />
<created>1694286183476</created>
<option name="number" value="00002" />
<option name="presentableId" value="LOCAL-00002" />
<option name="project" value="LOCAL" />
<updated>1694286183476</updated>
</task>
<task id="LOCAL-00003" summary="Move listenbrainz user to env var">
<option name="closed" value="true" />
<created>1694288928392</created>
<option name="number" value="00003" />
<option name="presentableId" value="LOCAL-00003" />
<option name="project" value="LOCAL" />
<updated>1694288928392</updated>
</task>
<task id="LOCAL-00004" summary="Add interface package. Start adding auth stuff for refreshing tokens.">
<option name="closed" value="true" />
<created>1694543753828</created>
<option name="number" value="00004" />
<option name="presentableId" value="LOCAL-00004" />
<option name="project" value="LOCAL" />
<updated>1694543753828</updated>
</task>
<option name="localTasksCounter" value="5" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="3" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Structure" />
<MESSAGE value="Track media server songs list" />
<MESSAGE value="Move listenbrainz user to env var" />
<MESSAGE value="Add interface package. Start adding auth stuff for refreshing tokens." />
<option name="LAST_COMMIT_MESSAGE" value="Add interface package. Start adding auth stuff for refreshing tokens." />
</component>
<component name="XSLT-Support.FileAssociations.UIState">
<expand />
<select />
</component>
</project>
+2 -2
View File
@@ -1,9 +1,9 @@
FROM ubuntu:20.04
FROM ubuntu:22.04
ENV RUSTUP_HOME=/usr/local/rustup \
CARGO_HOME=/usr/local/cargo \
PATH=/usr/local/cargo/bin:$PATH
RUN apt update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y gcc gcc-multilib cmake pkg-config libssl-dev curl
RUN apt update && DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt install -y gcc gcc-multilib cmake pkg-config libssl-dev curl dpkg-dev
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --profile minimal --default-toolchain nightly
RUN cargo install cargo-deb
+20 -2
View File
@@ -18,9 +18,27 @@ environment variables:
For deploying, these can be configured in `/etc/playlistd.toml`.
### Container build (Ubuntu 20.04)
### Container build (Ubuntu 22.04)
`podman run --rm --network=host -v "$PWD":/mnt -w /mnt -e "DATABASE_URL=postgres://jude@127.0.0.1/playlistd" playlistd cargo deb`
Build the image:
```sh
podman build -t playlistd-22 -f Containerfile .
```
Then build the `.deb`. The `sqlx` query macros check queries against a live, migrated database at
compile time, so the host's Postgres socket is mounted into the container. With rootless podman, the
container's root maps to your host user, so local peer authentication works without a password:
```sh
podman run --rm \
-v "$PWD":/mnt -w /mnt \
-v /var/run/postgresql:/var/run/postgresql \
-e DATABASE_URL='postgres://jude@%2Fvar%2Frun%2Fpostgresql/playlistd' \
playlistd-22 cargo deb
```
The package is written to `target/debian/`.
## How to use