update docker
This commit is contained in:
		
							parent
							
								
									fa890743f3
								
							
						
					
					
						commit
						548eb9613c
					
				|  | @ -0,0 +1,2 @@ | |||
| node_modules/ | ||||
| package-lock.json | ||||
|  | @ -0,0 +1,13 @@ | |||
| FROM alpine:3.18 | ||||
| 
 | ||||
| RUN apk update --no-cache | ||||
| RUN apk add --no-cache npm chromium | ||||
| 
 | ||||
| RUN mkdir /app | ||||
| WORKDIR /app | ||||
| 
 | ||||
| COPY ./puppeteer.js /app/puppeteer.js | ||||
| COPY ./server.js /app/server.js | ||||
| COPY ./package.json /app/package.json | ||||
| 
 | ||||
| CMD sh -c 'npm i && node server.js' | ||||
|  | @ -0,0 +1,5 @@ | |||
| { | ||||
|   "dependencies": { | ||||
|     "puppeteer": "^0.11.0" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,39 @@ | |||
| const puppeteer = require('puppeteer'); | ||||
| 
 | ||||
| module.exports = async ( | ||||
|   config = { url: '', screenshotPath: '', executablePath: '', timeout: 1000 } | ||||
| ) => { | ||||
| 
 | ||||
|   config = Object.assign({ | ||||
|     url: 'https://scrapingbee.com', | ||||
|     screenshotPath: './screenshot.jpg', | ||||
|     executablePath: '/usr/bin/chromium', | ||||
|     timeout: 1000, | ||||
|   }, config) | ||||
| 
 | ||||
|   const browser = await puppeteer.launch({ | ||||
|     executablePath: config.executablePath, | ||||
|     args: ['--no-sandbox', '--headless', '--disable-gpu'] | ||||
|   }); | ||||
|   const page = await browser.newPage(); | ||||
| 
 | ||||
|   // Set the viewport's width and height
 | ||||
|   await page.setViewport({ width: 1920, height: 1080 }); | ||||
| 
 | ||||
|   // Open ScrapingBee's home page
 | ||||
|   await page.goto(config.url); | ||||
| 
 | ||||
|   // Waiting Dom Ready
 | ||||
|   await new Promise(r => setTimeout(r, config.timeout)); | ||||
| 
 | ||||
|   try { | ||||
|     // Capture screenshot and save it in the current folder:
 | ||||
|     await page.screenshot({ path: config.screenshotPath }); | ||||
|     console.log(`Screenshot has been captured successfully`); | ||||
| 
 | ||||
|   } catch (err) { | ||||
|     console.log(`Error: ${err.message}`); | ||||
|   } finally { | ||||
|     await browser.close(); | ||||
|   } | ||||
| }; | ||||
|  | @ -0,0 +1,55 @@ | |||
| const http = require('http'); | ||||
| const url = require('url'); | ||||
| const fs = require('fs'); | ||||
| const puppeteer = require('./puppeteer'); | ||||
| 
 | ||||
| // Create an HTTP server
 | ||||
| const server = http.createServer((req, res) => { | ||||
|   const parseUrl = url.parse(req.url, true); | ||||
| 
 | ||||
|   const fail = (error) => { | ||||
|     res.writeHead(200, {'Content-Type': 'application/json'}); | ||||
|     res.end(JSON.stringify({ | ||||
|       status: false, | ||||
|       message: error | ||||
|     })) | ||||
|   } | ||||
| 
 | ||||
|   const config = { | ||||
|     screenshotPath: './screenshot2.jpg' | ||||
|   } | ||||
| 
 | ||||
|   if (parseUrl.query.url) { | ||||
|     config.url = parseUrl.query.url | ||||
|   } | ||||
| 
 | ||||
| 
 | ||||
|   try { | ||||
|     puppeteer(config) | ||||
|       .then(function() { | ||||
|         fs.readFile(config.screenshotPath, (err, data) => { | ||||
|           if (err) { | ||||
|             res.writeHead(500); | ||||
|             res.end('Internal Server Error'); | ||||
|           } else { | ||||
|             res.writeHead(200, {'Content-Type': 'image/jpeg'}); | ||||
|             res.end(data); | ||||
|           } | ||||
|         }); | ||||
|       }) | ||||
|       .catch(function(error) { | ||||
|         fail(error.toString()) | ||||
|       }); | ||||
|   } catch (error) { | ||||
|     fail(error.toString()) | ||||
|   } | ||||
| }); | ||||
| 
 | ||||
| // Set the port to listen to
 | ||||
| const port = process.env.PORT || 4000; | ||||
| const host = '0.0.0.0'; // Listen on all network interfaces
 | ||||
| 
 | ||||
| // Start the server
 | ||||
| server.listen(port, host, () => { | ||||
|   console.log(`Server running at http://${host}:${port}/`); | ||||
| }); | ||||
|  | @ -0,0 +1,2 @@ | |||
| node_modules/ | ||||
| package-lock.json | ||||
|  | @ -0,0 +1,12 @@ | |||
| FROM alpine:3.18 | ||||
| 
 | ||||
| RUN apk update | ||||
| RUN apk add --no-cache npm | ||||
| 
 | ||||
| RUN mkdir /socketio | ||||
| WORKDIR /socketio | ||||
| COPY ./server.js /socketio | ||||
| COPY ./package.json /socketio | ||||
| 
 | ||||
| EXPOSE 3000 | ||||
| CMD sh -c 'npm i && node server.js' | ||||
|  | @ -0,0 +1,21 @@ | |||
| // Import Socket.IO client library
 | ||||
| const io = require('socket.io-client'); | ||||
| 
 | ||||
| // URL of the Socket.IO server
 | ||||
| const serverUrl = 'http://localhost:3000'; | ||||
| 
 | ||||
| // Connect to the server
 | ||||
| const socket = io(serverUrl); | ||||
| 
 | ||||
| // Event handler for successful connection
 | ||||
| socket.on('connect', () => { | ||||
|     console.log('Connected to server'); | ||||
| }); | ||||
| 
 | ||||
| // Event handler for receiving messages from the server
 | ||||
| socket.on('message', (data) => { | ||||
|     console.log('Received message from server:', data); | ||||
| }); | ||||
| 
 | ||||
| // Sending a message to the server
 | ||||
| socket.emit('message', 'Hello, server!'); | ||||
|  | @ -0,0 +1,6 @@ | |||
| { | ||||
|   "dependencies": { | ||||
|     "socket.io": "^4.7.4", | ||||
|     "socket.io-client": "^4.7.4" | ||||
|   } | ||||
| } | ||||
|  | @ -0,0 +1,29 @@ | |||
| const httpServer = require("http").createServer(); | ||||
| const io = require("socket.io")(httpServer, { | ||||
|   // ...
 | ||||
| }); | ||||
| 
 | ||||
| io.on("connection", (socket) => { | ||||
| 
 | ||||
|     console.log('Connected'); | ||||
| 
 | ||||
|     // Handle data received from the client
 | ||||
|     socket.on('data', (data) => { | ||||
|         console.log('Received:', data.toString()); | ||||
|     }); | ||||
| 
 | ||||
|     socket.on('message', (data) => { | ||||
|         console.log('Received:', data.toString()); | ||||
|     }); | ||||
| 
 | ||||
|     // Handle when the client disconnects
 | ||||
|     socket.on('end', () => { | ||||
|         console.log('Client disconnected'); | ||||
|     }); | ||||
| }); | ||||
| 
 | ||||
| const port = process.env.PORT || 3000; | ||||
| const host = '0.0.0.0'; | ||||
| httpServer.listen(port, host, () => { | ||||
|   console.log(`Server running on port ${host}:${port}`); | ||||
| }); | ||||
|  | @ -1,87 +0,0 @@ | |||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - master | ||||
|   pull_request_target: | ||||
|     types: [opened, synchronize, reopened] | ||||
| 
 | ||||
| name: CodeSee Map | ||||
| 
 | ||||
| jobs: | ||||
|   test_map_action: | ||||
|     runs-on: ubuntu-latest | ||||
|     continue-on-error: true | ||||
|     name: Run CodeSee Map Analysis | ||||
|     steps: | ||||
|       - name: checkout | ||||
|         id: checkout | ||||
|         uses: actions/checkout@v2 | ||||
|         with: | ||||
|           repository: ${{ github.event.pull_request.head.repo.full_name }} | ||||
|           ref: ${{ github.event.pull_request.head.ref }} | ||||
|           fetch-depth: 0 | ||||
| 
 | ||||
|       # codesee-detect-languages has an output with id languages. | ||||
|       - name: Detect Languages | ||||
|         id: detect-languages | ||||
|         uses: Codesee-io/codesee-detect-languages-action@latest | ||||
| 
 | ||||
|       - name: Configure JDK 16 | ||||
|         uses: actions/setup-java@v2 | ||||
|         if: ${{ fromJSON(steps.detect-languages.outputs.languages).java }} | ||||
|         with: | ||||
|           java-version: '16' | ||||
|           distribution: 'zulu' | ||||
| 
 | ||||
|       # CodeSee Maps Go support uses a static binary so there's no setup step required. | ||||
| 
 | ||||
|       - name: Configure Node.js 14 | ||||
|         uses: actions/setup-node@v2 | ||||
|         if: ${{ fromJSON(steps.detect-languages.outputs.languages).javascript }} | ||||
|         with: | ||||
|           node-version: '14' | ||||
| 
 | ||||
|       - name: Configure Python 3.x | ||||
|         uses: actions/setup-python@v2 | ||||
|         if: ${{ fromJSON(steps.detect-languages.outputs.languages).python }} | ||||
|         with: | ||||
|           python-version: '3.10' | ||||
|           architecture: 'x64' | ||||
| 
 | ||||
|       - name: Configure Ruby '3.x' | ||||
|         uses: ruby/setup-ruby@v1 | ||||
|         if: ${{ fromJSON(steps.detect-languages.outputs.languages).ruby }} | ||||
|         with: | ||||
|           ruby-version: '3.0' | ||||
| 
 | ||||
|       # We need the rust toolchain because it uses rustc and cargo to inspect the package | ||||
|       - name: Configure Rust 1.x stable | ||||
|         uses: actions-rs/toolchain@v1 | ||||
|         if: ${{ fromJSON(steps.detect-languages.outputs.languages).rust }}  | ||||
|         with: | ||||
|           toolchain: stable | ||||
| 
 | ||||
|       - name: Generate Map | ||||
|         id: generate-map | ||||
|         uses: Codesee-io/codesee-map-action@latest | ||||
|         with: | ||||
|           step: map | ||||
|           api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} | ||||
|           github_ref: ${{ github.ref }} | ||||
|           languages: ${{ steps.detect-languages.outputs.languages }} | ||||
| 
 | ||||
|       - name: Upload Map | ||||
|         id: upload-map | ||||
|         uses: Codesee-io/codesee-map-action@latest | ||||
|         with: | ||||
|           step: mapUpload | ||||
|           api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} | ||||
|           github_ref: ${{ github.ref }} | ||||
| 
 | ||||
|       - name: Insights | ||||
|         id: insights | ||||
|         uses: Codesee-io/codesee-map-action@latest | ||||
|         with: | ||||
|           step: insights | ||||
|           api_token: ${{ secrets.CODESEE_ARCH_DIAG_API_TOKEN }} | ||||
|           github_ref: ${{ github.ref }} | ||||
|  | @ -1,6 +1,10 @@ | |||
| version : '3' | ||||
| 
 | ||||
| name: laravel-rabbitmq | ||||
| 
 | ||||
| networks: | ||||
|   laravel: | ||||
| 
 | ||||
| services: | ||||
|   app: | ||||
|     tty: true | ||||
|  | @ -12,10 +16,18 @@ services: | |||
|       - 1000:8000 | ||||
|       - 1001:8001 | ||||
|     networks: | ||||
|       - laravel | ||||
|       laravel: | ||||
|     depends_on: | ||||
|       - redis | ||||
| 
 | ||||
|   puppeteer: | ||||
|     build: | ||||
|       context: ./.docker/puppeteer | ||||
|       dockerfile: Dockerfile | ||||
|     ports: | ||||
|       - 4000:4000 | ||||
|     shm_size: '256M' | ||||
| 
 | ||||
|   redis: | ||||
|     image: redis | ||||
|     container_name: redis | ||||
|  |  | |||
|  | @ -4,6 +4,8 @@ APP_KEY=base64:S0K/eYkvLZYwMvP7CDU6HoII9UmcTGmif9lZepsoSFs= | |||
| APP_DEBUG=true | ||||
| APP_URL=http://localhost | ||||
| 
 | ||||
| SOCKET_IO=http://socketio:3000 | ||||
| 
 | ||||
| LOG_CHANNEL=stack | ||||
| LOG_DEPRECATIONS_CHANNEL=null | ||||
| LOG_LEVEL=debug | ||||
|  |  | |||
|  | @ -0,0 +1,47 @@ | |||
| <?php | ||||
| 
 | ||||
| namespace App\Console\Commands; | ||||
| 
 | ||||
| use ElephantIO\Client; | ||||
| use ElephantIO\Engine\SocketIO\Version2X; | ||||
| use ElephantIO\Engine\SocketIO\Version4X; | ||||
| use Illuminate\Console\Command; | ||||
| 
 | ||||
| class Socket extends Command | ||||
| { | ||||
|     /** | ||||
|      * The name and signature of the console command. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $signature = 'socket'; | ||||
| 
 | ||||
|     /** | ||||
|      * The console command description. | ||||
|      * | ||||
|      * @var string | ||||
|      */ | ||||
|     protected $description = 'Command description'; | ||||
| 
 | ||||
|     /** | ||||
|      * Execute the console command. | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function handle() | ||||
|     { | ||||
| 
 | ||||
|         $url = env('SOCKET_IO'); | ||||
| 
 | ||||
|         // if client option is omitted then it will use latest client available,
 | ||||
| 
 | ||||
|         $client = new Client(new Version4X($url)); | ||||
|         $client->connect(); | ||||
| 
 | ||||
|         // Sending a message to the server
 | ||||
|         $client->emit('message', ['Hello, server!']); | ||||
| 
 | ||||
|         // Close the connection when done
 | ||||
|         $client->disconnect(); | ||||
|     } | ||||
| } | ||||
|  | @ -6,6 +6,7 @@ | |||
|     "license": "MIT", | ||||
|     "require": { | ||||
|         "php": "^8.0.2", | ||||
|         "elephantio/elephant.io": "^4.7", | ||||
|         "guzzlehttp/guzzle": "^7.2", | ||||
|         "laravel/framework": "^9.19", | ||||
|         "laravel/horizon": "^5.22", | ||||
|  |  | |||
|  | @ -4,7 +4,7 @@ | |||
|         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", | ||||
|         "This file is @generated automatically" | ||||
|     ], | ||||
|     "content-hash": "97efdeb4e149ae370ca39b1992647562", | ||||
|     "content-hash": "25b944829f758ab8566122440a9ef34e", | ||||
|     "packages": [ | ||||
|         { | ||||
|             "name": "brick/math", | ||||
|  | @ -501,6 +501,81 @@ | |||
|             ], | ||||
|             "time": "2023-10-06T06:47:41+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "elephantio/elephant.io", | ||||
|             "version": "v4.7.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/ElephantIO/elephant.io.git", | ||||
|                 "reference": "4b2f8f044c815c6c5b7c989cc2e18a370718e55f" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/ElephantIO/elephant.io/zipball/4b2f8f044c815c6c5b7c989cc2e18a370718e55f", | ||||
|                 "reference": "4b2f8f044c815c6c5b7c989cc2e18a370718e55f", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "ext-mbstring": "*", | ||||
|                 "php": ">=7.2", | ||||
|                 "psr/log": "^1.1 || ^3.0" | ||||
|             }, | ||||
|             "require-dev": { | ||||
|                 "friendsofphp/php-cs-fixer": "^3.0", | ||||
|                 "monolog/monolog": "^2.8 || ^3.0", | ||||
|                 "phpunit/phpunit": "^8.5 || ^9.5" | ||||
|             }, | ||||
|             "type": "library", | ||||
|             "autoload": { | ||||
|                 "psr-4": { | ||||
|                     "ElephantIO\\": "src/" | ||||
|                 } | ||||
|             }, | ||||
|             "notification-url": "https://packagist.org/downloads/", | ||||
|             "license": [ | ||||
|                 "MIT" | ||||
|             ], | ||||
|             "authors": [ | ||||
|                 { | ||||
|                     "name": "Baptiste Clavié", | ||||
|                     "email": "baptiste@wisembly.com", | ||||
|                     "homepage": "http://baptiste.xn--clavi-fsa.net/", | ||||
|                     "role": "Maintainer" | ||||
|                 }, | ||||
|                 { | ||||
|                     "name": "Guillaume Potier", | ||||
|                     "email": "guillaume@wisembly.com", | ||||
|                     "role": "Maintainer" | ||||
|                 }, | ||||
|                 { | ||||
|                     "name": "Toha", | ||||
|                     "email": "tohenk@yahoo.com", | ||||
|                     "role": "Maintainer" | ||||
|                 }, | ||||
|                 { | ||||
|                     "name": "Ludovic Barreca", | ||||
|                     "email": "ludogp2@gmail.com", | ||||
|                     "role": "Project Founder" | ||||
|                 }, | ||||
|                 { | ||||
|                     "name": "Elephant.IO Community", | ||||
|                     "role": "Contributors :)" | ||||
|                 } | ||||
|             ], | ||||
|             "description": "Send events to a socket.io server through PHP", | ||||
|             "homepage": "https://elephantio.github.io/elephant.io/", | ||||
|             "keywords": [ | ||||
|                 "Socket.io", | ||||
|                 "dialog", | ||||
|                 "nodejs", | ||||
|                 "real time", | ||||
|                 "websocket" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/ElephantIO/elephant.io/tree/v4.7.0" | ||||
|             }, | ||||
|             "time": "2024-02-16T19:40:38+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "fruitcake/php-cors", | ||||
|             "version": "v1.3.0", | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| <?php | ||||
| 
 | ||||
| use ElephantIO\Client; | ||||
| use Illuminate\Support\Facades\Route; | ||||
| 
 | ||||
| /* | ||||
|  | @ -17,4 +18,5 @@ Route::get('/', function () { | |||
|     return view('welcome'); | ||||
| }); | ||||
| 
 | ||||
| Route::view('/socket', 'socket'); | ||||
| Route::get('/socket', function () { | ||||
| }); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue