Mount permanent vol out of docker
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
apatil 2025-05-07 21:43:45 +01:00
parent fbcd7049bf
commit 5f940c51ff
2 changed files with 30 additions and 17 deletions

View File

@ -1,13 +1,14 @@
steps: steps:
deploy: deploy:
image: docker:latest image: docker:latest
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- /home/pi/music:/app/music
commands: commands:
- docker build -t portfolio . - docker build -t portfolio .
- docker stop portfolio || true - docker stop portfolio || true
- docker rm portfolio || true - docker rm portfolio || true
- docker run -d -p 8080:8080 --name portfolio portfolio - docker run -v /home/pi/music:/app/music -d -p 8080:8080 --name portfolio portfolio
when: when:
event: push event: push
branch: main branch: main

View File

@ -1,7 +1,10 @@
'use client'; 'use client';
import { useEffect, useState } from 'react'; import { useEffect, useState } from 'react';
import { import {
Container, Typography, List, ListItem, ListItemText, Box, Button, Input Container, Typography, List, ListItem, ListItemText, Box, Button, Input,
ListItemButton,
ListItemIcon,
CardMedia
} from '@mui/material'; } from '@mui/material';
import UploadIcon from '@mui/icons-material/Upload'; import UploadIcon from '@mui/icons-material/Upload';
import AudioPlayer from '@/components/AudioPlayer/AudioPlayer'; import AudioPlayer from '@/components/AudioPlayer/AudioPlayer';
@ -42,8 +45,29 @@ export default function Home() {
return ( return (
<Container maxWidth="md" sx={{ paddingTop: 4 }}> <Container maxWidth="md" sx={{ paddingTop: 4 }}>
<Typography variant="h4" gutterBottom textAlign="center"> <Typography variant="h4" gutterBottom textAlign="center">
Music Player Music
</Typography> </Typography>
<Typography variant="body1" gutterBottom textAlign="center">
The grizzly made some tunes while he was bored grazing the blueberry patches in the high dessert.
</Typography>
{currentTrack && (
<Box textAlign="center" mt={3}>
<AudioPlayer title={`${currentTrack.split('.')[0]}`} src={`/app/music/${encodeURIComponent(currentTrack)}`} />
</Box>
)}
<List>
{tracks.map((track, idx) => (
<ListItem key={idx} onClick={() => setCurrentTrack(track)} disablePadding>
<ListItemButton>
<ListItemIcon>
<CardMedia component={"img"} image={`/api/music/${encodeURIComponent(track)}/cover`} alt='Album cover' />
</ListItemIcon>
<ListItemText primary={track.split('.')[0]} />
</ListItemButton>
</ListItem>
))}
</List>
<Box textAlign="center" mb={3}> <Box textAlign="center" mb={3}>
<label htmlFor="upload"> <label htmlFor="upload">
<Input <Input
@ -54,22 +78,10 @@ export default function Home() {
onChange={handleUpload} onChange={handleUpload}
/> />
<Button variant="contained" component="span" startIcon={<UploadIcon />} disabled={uploading}> <Button variant="contained" component="span" startIcon={<UploadIcon />} disabled={uploading}>
{uploading ? 'Uploading...' : 'Upload MP3'} {uploading ? 'Uploading...' : 'Upload'}
</Button> </Button>
</label> </label>
</Box> </Box>
<List>
{tracks.map((track, idx) => (
<ListItem component={'button'} key={idx} onClick={() => setCurrentTrack(track)}>
<ListItemText primary={track} />
</ListItem>
))}
</List>
{currentTrack && (
<Box textAlign="center" mt={3}>
<AudioPlayer title={`${currentTrack}`} src={`/api/music/${encodeURIComponent(currentTrack)}`} />
</Box>
)}
</Container> </Container>
); );
} }