Skip to content

Added Dockerfile and ws-scrcpy startup script#150

Open
vitalyrepin wants to merge 1 commit intoNetrisTV:masterfrom
vitalyrepin:master
Open

Added Dockerfile and ws-scrcpy startup script#150
vitalyrepin wants to merge 1 commit intoNetrisTV:masterfrom
vitalyrepin:master

Conversation

@vitalyrepin
Copy link
Copy Markdown

I suggest to add dockerization. It would be great to have official ws-scrcpy image at dockerhub.

Copy link
Copy Markdown
Collaborator

@drauggres drauggres left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi. Thank you for your contribution.

It works, but there are some improvements that could be done. With all the changes I suggest Dockerfile looks like this (assuming it will be moved to the projects root):

FROM alpine:3.14 AS builder

ADD . /ws-scrcpy
RUN apk add --no-cache nodejs npm python3 make g++
WORKDIR /ws-scrcpy
RUN npm install
RUN npm run dist
WORKDIR dist
RUN npm install

FROM alpine:3.14 AS runner
LABEL maintainer="Vitaly Repin <vitaly.repin@gmail.com>"

RUN apk add --no-cache android-tools npm
COPY --from=builder /ws-scrcpy/dist /root/ws-scrcpy

WORKDIR /root/ws-scrcpy
CMD ["npm", "start"]

But if you don't want to make any change I can merge this as is.

Comment thread docker/Dockerfile Outdated
Comment on lines +3 to +4
RUN apk add --no-cache git nodejs npm python3 make g++
RUN cd / ; git clone https://github.com/NetrisTV/ws-scrcpy.git
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It makes no sense to clone the project again. Is it possible to reuse the data from the projects root? Then there is also will be no need to install git in the third line.
If we move Dockerfile to the projects root, then we can do it like this:

ADD . /ws-scrcpy
RUN apk add --no-cache nodejs npm python3 make g++
WORKDIR /ws-scrcpy

Comment thread docker/Dockerfile Outdated

RUN apk add --no-cache git nodejs npm python3 make g++
RUN cd / ; git clone https://github.com/NetrisTV/ws-scrcpy.git
RUN cd /ws-scrcpy ; npm install
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To actually build the project you need to call npm run dist after. When it finishes, you will have the distribution inside the dist directory.

Since we don't really want to copy dev-deps from node_modules and don't want to install build tools on the "runner" we should again run npm install, but now from inside the dist.

RUN npm install
RUN npm run dist
WORKDIR dist
RUN npm install

Comment thread docker/Dockerfile
LABEL maintainer="Vitaly Repin <vitaly.repin@gmail.com>"

RUN apk add --no-cache android-tools npm
COPY --from=builder /ws-scrcpy /root/ws-scrcpy
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you used npm run dist on the "builder" you need to copy from /ws-scrcpy/dist.

COPY --from=builder /ws-scrcpy/dist /root/ws-scrcpy

Comment thread docker/Dockerfile Outdated
COPY assets/run.sh /
RUN chmod +x /run.sh

CMD ["/run.sh", "--"]
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need this file? Will not this be enough?

WORKDIR /root/ws-scrcpy
CMD ["npm", "start"]

Comment thread docker/README Outdated
Comment on lines +1 to +7
To build docker image

docker build -t wsscrcpy:latest .

To run:

docker run --rm -i -t --privileged -v /dev/bus/usb:/dev/bus/usb -p 127.0.0.1:8000:8000/tcp wsscrcpy:latest
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You can add this to the main README, after Build and Start section.

@drauggres
Copy link
Copy Markdown
Collaborator

drauggres commented Oct 7, 2021

To be clear, I don't want to maintain the docker image (or actually provide any kind of a prebuild distribution), so if you want to merge this you will take responsibility for maintaining it. Meaning I will call you (like this @vitalyrepin) every time someone asks about docker.

P.S. I'm not sure about publishing on dockerhub. This project probably will not be qualified for the docker open source program.

UPD: but it should be possible to publish it on GitHub Packages

@drauggres drauggres mentioned this pull request Oct 7, 2021
@drauggres drauggres linked an issue Oct 7, 2021 that may be closed by this pull request
@drauggres
Copy link
Copy Markdown
Collaborator

@vitalyrepin You should remove old files from /docker.
Also, before merging this, I need your confirmation that you are willing to maintain this, because I am not.

@vitalyrepin vitalyrepin closed this Nov 1, 2021
@vitalyrepin vitalyrepin reopened this Nov 1, 2021
maxduke pushed a commit to maxduke/ws-scrcpy that referenced this pull request Aug 10, 2023
DEV-18306 [ramiel] Error: ENOENT: no such file or directory, scandir '/tmp/ramiel_file_lock'
superen7527 added a commit to superen7527/scrcpyweb that referenced this pull request Aug 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Docker support

2 participants