diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..b1254b53c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,19 @@ +.git +.gitignore +.github +.vscode +.editorconfig +.dockerignore +.angular +.electron +.husky +Dockerfile +README.md +dist +e2e +node_modules +screenshots +test-results +coverage +build +release diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 000000000..dc3403955 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,31 @@ +# Stage 1 - build environment +FROM node:16-alpine AS build + +RUN apk add --no-cache python3 make g++ + +# Create app directory +WORKDIR /usr/src/app + +# Swtich to node user +#RUN chown node:node ./ +#USER node + +COPY package*.json ./ + +# Install app dependencies +RUN npm ci && npm cache clean --force + +# Copy all required files +COPY . . + +# Build the application +RUN npm run build:web + +# Stage 2 - the production environment +FROM nginx:stable-alpine + +# Copy artifacts and nignx.conf +COPY --from=build /usr/src/app/dist/ /usr/share/nginx/html +COPY --from=build /usr/src/app/docker/nginx.conf /etc/nginx/conf.d/default.conf + +CMD sed -i "s/localhost:3333/localhost:$BACKEND_PORT/g" /usr/share/nginx/html/main.*.js && nginx -g 'daemon off;' \ No newline at end of file diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..dcf555abe --- /dev/null +++ b/docker/README.md @@ -0,0 +1,16 @@ +# Self-hosted version of IPTVnator + +You can deploy and run the PWA version of IPTVnator on your own machine with `docker-compose` using the following command: + + $ cd docker + $ docker-compose run -d + +This command will launch the frontend and backend applications. By default, the application will be available at: http://localhost:4333/. The ports can be configured in the `docker-compose.yml` file. + +## Build frontend + + $ docker build -t 4gray/iptvnator -f docker/Dockerfile . + +## Build backend + +You can find the backend app with all instructions in a separate GitHub repository - https://github.com/4gray/iptvnator-backend \ No newline at end of file diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 000000000..f6d92a38e --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' + +services: + backend: + image: 4gray/iptvnator-backend:latest + ports: + - "7333:3000" + environment: + - CLIENT_URL=http://localhost:4333 + + frontend: + image: 4gray/iptvnator:latest + ports: + - "4333:80" #this one should match with the port in CLIENT_URL env + environment: + - BACKEND_PORT=7333 # this one should match with the exposed port of the backend service + \ No newline at end of file diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 000000000..3eacd9674 --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,11 @@ +server { + listen 80; + + location / { + root /usr/share/nginx/html; + index index.html index.htm; + try_files $uri $uri/ /index.html =404; + } + + include /etc/nginx/extra-conf.d/*.conf; +} \ No newline at end of file