当前位置: 首页 > news >正文

【打工日常】使用docker部署在线Photopea用于linux下替代ps

一、Photopea介绍

linux没有ps适配,对于有时候工作来说确实不方便,我找了很久,才找到了一款功能可以跟ps接近的在线软件,使用docker部署就可以了。它是ps的最佳替代品之一,其界面几乎与ps相同,只不过它是在线的网页,但是功能基本上可以满足不是设计类的刚需。

二、本次实践介绍

本次实践简介

本次实践部署环境为个人测试环境

本地环境规划

本次实践环境规划:先下载Photopea-Offline.git文件,然后使用dockerfile创建镜像,最后通过docker-cli或者docker compose启动容器

镜像命名IP地址容器镜像版本操作系统版本
pslocalhostlatestubuntu 22.04

三、检查本地Docker环境

检查本地Docker版本

检查Docker版本:docker versionroot@WellDone:/home/goodjob# docker version
Client: Docker Engine - CommunityVersion:           25.0.0API version:       1.44Go version:        go1.21.6Git commit:        e758fe5Built:             Thu Jan 18 17:09:49 2024OS/Arch:           linux/amd64Context:           defaultServer: Docker Engine - CommunityEngine:Version:          25.0.0API version:      1.44 (minimum version 1.24)Go version:       go1.21.6Git commit:       615dfdfBuilt:            Thu Jan 18 17:09:49 2024OS/Arch:          linux/amd64Experimental:     falsecontainerd:Version:          1.6.27GitCommit:        a1496014c916f9e62104b33d1bb5bd03b0858e59runc:Version:          1.1.11GitCommit:        v1.1.11-0-g4bccb38docker-init:Version:          0.19.0GitCommit:        de40ad0
root@WellDone:/home/goodjob# 

检查Docker服务状态

检查Docker服务状态,确保Docker服务正常运行。

systemctl status dockerroot@WellDone:/home/goodjob/Downloads# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2024-01-24 08:54:31 CST; 1 day 4h ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 1549 (dockerd)Tasks: 65Memory: 419.5MCPU: 38.874sCGroup: /system.slice/docker.service├─  1549 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock├─  2010 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.17.0.2 -container-port 6379├─  2016 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 6379 -container-ip 172.17.0.2 -container-port 6379├─  2029 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.17.0.3 -container-port 5432├─  2036 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5432 -container-ip 172.17.0.3 -container-port 5432├─123083 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8888 -container-ip 172.17.0.4 -container-port 8080└─123095 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8888 -container-ip 172.17.0.4 -container-port 80801月 24 08:54:31 WellDone dockerd[1549]: time="2024-01-24T08:54:31.067895045+08:00" level=info msg="API listen on /run/docker.sock"
1月 24 08:54:31 WellDone systemd[1]: Started Docker Application Container Engine.
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.185008219+08:00" level=info msg="ignoring event" container=8ad99af82d8a41dd661d>
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.189484205+08:00" level=warning msg="ShouldRestart failed, container will not be>
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.024915139+08:00" level=info msg="ignoring event" container=27fd28e2993f31b170b8>
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.029986730+08:00" level=warning msg="ShouldRestart failed, container will not be>
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.329180722+08:00" level=info msg="Container failed to exit within 10s of signal >
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.350757439+08:00" level=info msg="ignoring event" container=b1223add00f36bbb3246>
1月 25 10:49:21 WellDone dockerd[1549]: time="2024-01-25T10:49:21.993755983+08:00" level=info msg="Container failed to exit within 10s of signal >
1月 25 10:49:22 WellDone dockerd[1549]: time="2024-01-25T10:49:22.015822650+08:00" level=info msg="ignoring event" container=edb0e153b45dbe62acd8>
lines 1-28/28 (END)

四、部署Photopea镜像

创建Photopea镜像

a.创建存放ps的路径
mkdir /opt/psb.然后在此目录下载对应的资源
git clone https://git.nixnet.services/DUOLabs333/Photopea-Offline.git .c.创建dockerfile
touch Dockerfile
vim Dockerfiled.dockerfile的内容
============================================================
FROM alpineRUN sed -i 's/[dl-cdn.alpinelinux.org/mirrors.aliyun.com/g](http://dl-cdn.alpinelinux.org/mirrors.aliyun.com/g "dl-cdn.alpinelinux.org/mirrors.aliyun.com/g")' /etc/apk/repositoriesRUN cat /etc/apk/repositoriesWORKDIR /var/run/photopeaRUN apk update && apk upgradeRUN apk add git python3COPY [www.photopea.com](http://www.photopea.com/ "www.photopea.com") ./[www.photopea.com](http://www.photopea.com/ "www.photopea.com")EXPOSE 2887ENTRYPOINT ["python3", "-m", "http.server", "--directory", "[www.photopea.com](http://www.photopea.com/ "www.photopea.com")", "2887"]
============================================================e.确保dockerfile跟git clone下载的内容是同一层路径,执行dockerfile创建镜像
docker build . -t photopea:latest实际上我已经创建好了镜像存在我的阿里云里面,可以直接拉取即可
docker pull registry.cn-guangzhou.aliyuncs.com/welldene/docker:photopea

创建容器

使用docker快速创建photopea的容器。

完整创建过程:1.使用docker-cli启动一个photopea的容器。docker run -d --name ps -p 2887:2887 registry.cn-guangzhou.aliyuncs.com/welldene/docker:photopea2.使用docker-compose启动一个photopea的容器version: '3.9'
services:welldene:image: 'registry.cn-guangzhou.aliyuncs.com/welldene/docker:photopea'ports:- '2887:2887'container_name: ps3.容器启动正常,访问
http://ip:2887

​​​检查容器运行状态

检查容器的运行状态,确保服务的正常运行。

docker ps

root@WellDone:/home/goodjob# docker ps
CONTAINER ID   IMAGE                                                       COMMAND                   CREATED         STATUS         PORTS                                       NAMES
ps              registry.cn-guangzhou.aliyuncs.com/welldene/docker:photopea        "python3 -m http.ser…"   ps              6 minutes ago   Up 6 minutes   0.0.0.0:2887->2887/tcp, :::2887->2887/tcp

五、访问photopea页面

访问photopea首页 访问地址:http://localhost:2887

 

相关文章:

【打工日常】使用docker部署在线Photopea用于linux下替代ps

一、Photopea介绍 linux没有ps适配,对于有时候工作来说确实不方便,我找了很久,才找到了一款功能可以跟ps接近的在线软件,使用docker部署就可以了。它是ps的最佳替代品之一,其界面几乎与ps相同,只不过它是在…...

leetcode 热题 100_盛最多水的容器

题解一: 双指针遍历:容量计算公式为min(左高度,右高度)*底部距离,我们可以令底部距离逐步递减(左右两边的指针向中部移动)。此时对于min(左高度,右高度),假设较高的线向中部移动&…...

基本正则表达式

基本正则表达式 正则命令功能^尖角号,用于模式的最左侧,如“^oldbpy",匹配以oldboy单词开头的行$美元符,用于模式的最右侧,如"oldboy$",表示以oldboy单词结尾的行^$组合符&…...

sqlserver保存微信Emoji表情

首先将数据库字段,设置类型为 nvarchar(200)一个emoji表情,占4字节就可以了,web前端展示不用改任何东西,直接提交数据保存;回显也会没有问题,C#代码不用做任何处理; 不哭不闹要睡觉&#x1f31…...

网络编程 io_uring

io_uring 1、概述 io_uring是Linux(内核版本在5.1以后)在2019年加入到内核中的一种新型的异步I/O模型; io_uring使用共享内存,解决高IOPS场景中的用户态和内核态的切换过程,减少系统调用;用户可以直接向…...

Java中的static

Java中的static 同一个类的静态变量共享同一个内存空间,即静态变量也就是被 static 关键字修饰的变量。它可以被类的所有实例共享,无论一个类创建了多少个对象,它们都共享同一份静态变量。从变量在内存中的存储方式来看,如果成员…...

如何在群晖Docker运行本地聊天机器人并结合内网穿透发布到公网访问

文章目录 1. 拉取相关的Docker镜像2. 运行Ollama 镜像3. 运行Chatbot Ollama镜像4. 本地访问5. 群晖安装Cpolar6. 配置公网地址7. 公网访问8. 固定公网地址 随着ChatGPT 和open Sora 的热度剧增,大语言模型时代,开启了AI新篇章,大语言模型的应用非常广泛,包括聊天机…...

lv20 QT进程线程编程

知识点&#xff1a;启动进程 &#xff0c;线程 &#xff0c;线程同步互斥 1 启动进程 应用场景&#xff1a;通常在qt中打开另一个程序 process模板 QString program “/bin/ls"; QStringList arguments; arguments << "-l" << “-a";QPro…...

什么是机器人学习?

机器人学习是一种涉及人工智能和机器人技术的领域&#xff0c;旨在使机器人能够从经验中学习和改进其性能。通过模仿人类的学习过程&#xff0c;机器人可以通过不断地接收和分析信息来提高自己的技能和表现。机器人学习可以分为监督学习、无监督学习和强化学习等不同类型&#…...

裸机程序--时间片调度

1.为什么自己写一个时间片调度呢 a. 网上其实有很多成熟的时间片调度例程, 包括我最开始参加工作也是抄的网上的例程(还记得当时领导问我看明白了它的调度原理吗, 作为一个自学刚参加工作的我来说, 看懂别人的意思真的很难, 当时只能含糊其词的说看得差不多) b. 在我看来网上的…...

【web APIs】5、(学习笔记)有案例!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、js组成window对象定时器-延迟函数location对象navigator对象histroy对象 二 、本地存储&#xff08;今日重点&#xff09;localStorage&#xff08;重点&am…...

【刷题1】LeetCode 994. 腐烂的橘子 java题解

tag:图论 广度优先搜索 https://leetcode.cn/problems/rotting-oranges/description/?envTypestudy-plan-v2&envIdtop-100-liked 使用广度优先搜索&#xff0c;搜索步数就是分钟数&#xff0c;等到所有橘子都腐烂后&#xff0c;各个橘子腐烂的最长分钟数就是全部都烂的最小…...

Java的运行机制与Java开发环境的搭建

1.编译和执行 首先通过文本编辑器编写源程序&#xff08;后缀为.java&#xff09;&#xff0c;再利用编译器编译成字节码文件&#xff08;后缀为.class&#xff09;,最后利用虚拟机也叫解释器解释执行。 2.JVM、JRE和JDK的区别 简单来说&#xff0c; ①JVM 提供了运行 Java 程…...

【Java】面向对象之多态超级详解!!

文章目录 前言一、多态1.1 多态的概念1.2 多态的实现条件1.3 重写1.3.1方法重写的规则1.3.2重写和重载的区别 1.4 向上转型和向下转型1.4.1向上转型1.4.2向下转型 1.5 多态的优缺点1.5.1 使用多态的好处1.5.2 使用多态的缺陷 结语 前言 为了深入了解JAVA的面向对象的特性&…...

react 路由的基本原理及实现

1. react 路由原理 不同路径渲染不同的组件 有两种实现方式 ● HasRouter 利用hash实现路由切换 ● BrowserRouter 实现h5 API实现路由切换 1. 1 HasRouter 利用hash 实现路由切换 1.2 BrowserRouter 利用h5 Api实现路由的切换 1.2.1 history HTML5规范给我们提供了一个…...

[极客大挑战 2019]LoveSQL1 题目分析与详解

一、题目简介&#xff1a; 二、通关思路&#xff1a; 1、首先查看页面源代码&#xff1a; 我们发现可以使用工具sqlmap来拿到flag&#xff0c;我们先尝试手动注入。 2、 打开靶机&#xff0c;映入眼帘的是登录界面&#xff0c;首先尝试万能密码能否破解。 username: 1 or 11…...

探索RedisJSON:将JSON数据力量带入Redis世界

探索RedisJSON&#xff1a;将JSON数据力量带入Redis世界 当我们谈论数据存储和查询时&#xff0c;Redis和JSON都是无法忽视的重要角色。Redis以其高效的键值存储、快速的读/写速度、以及丰富的数据结构赢得了开发者的喜爱。而JSON&#xff0c;作为一种轻量级的数据交换格式&am…...

【精通Spring】基于注解管理Bean

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…...

Python爬虫——Urllib库-3

目录 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 获取豆瓣电影前十页的数据 ajax的post请求 总结 ajax的get请求 获取豆瓣电影第一页的数据并保存到本地 首先可以在浏览器找到发送数据的接口 那么我们的url就可以在header中找到了 再加上UA这个header 进行请…...

JAVA工程师面试专题-《消息队列》篇

​​​​​​​ 1、为什么使用消息队列&#xff1f; 解耦、异步、削峰 2、消息队列有什么优缺点 优点&#xff1a;解耦、异步、削峰 缺点&#xff1a;系统可用性降低、系统复杂度提高、一致性问题 3、如何进⾏消息队列选型&#xff1f; Kafka&#xff1a; ○ 优点&…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器&#xff1a;Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...