用Docker玩俄罗斯方块

用 SQL 写的俄罗斯方块游戏:Tetris-SQL

用 SQL 写的俄罗斯方块游戏:Tetris-SQL

运行Postgres容器

text
复制代码
docker run --name pg -p 5432:5432 -d -e POSTGRES_PASSWORD=postgres postgres:16
  • docker run 运行容器
  • -name pg 容器命名为pg
  • p 5432:5432 将主机的端口和docker容器的端口映射起来。PostgreSQL 数据库默认使用 5432 端口,因此这样做可以使你从主机上访问容器内的 PostgreSQL 数据库服务。也就是说我们可以在自己的控制台里操控容器中的PostgreSQL 数据库了。
  • d 以后台模式运行
  • e POSTGRES_PASSWORD=postgres ai说是环境变量,设置PostgreSQL 数据库POSTGRES_PASSWORD环境变量值为postgres
  • postgres:16 postgres是镜像的名字,:16 是镜像的版本标签。这个命令会从 Docker Hub 拉取(如果本地没有的话)版本为 16 的 PostgreSQL 镜像,并基于这个镜像创建和运行容器。
image.png image 1.png 有时候可能网不好会失败,多执行几次。这样就成功啦 image 2.png

在docker容器中执行命令

bash
复制代码
docker exec pg apt update
  • docker exec pg 在pg容器中执行命令
  • apt update 更新apt包管理器
bash
复制代码
docker exec pg apt install -y python3-psycopg2
  • apt install -y python3-psycopg2 在容器内部运行的命令,使用 APT 包管理器安装 python3-psycopg2 包。y 选项自动确认安装,而不提示用户确认。

拉项目放到容器中运行

bash
复制代码
git clone https://github.com/nuno-faria/tetris-sql docker cp tetris-sql pg:tetris-sql docker exec pg chmod +x ./tetris-sql/input.py
  • docker cp tetris-sql pg:tetris-sql:
    • docker cp: 这个命令用于在主机和 Docker 容器之间复制文件或目录。
    • tetris-sql: 本地的文件或目录名称,这里是你刚刚克隆下来的 Git 仓库。
    • pg:tetris-sql: 目标容器和目标路径。pg 是容器的名字,tetris-sql 是容器内的路径。这个命令将本地的 tetris-sql 目录复制到 pg 容器的根目录下。
  • docker exec pg chmod +x ./tetris-sql/input.py:
    • docker exec: 用于在运行中的容器内执行命令。
    • pg: 目标容器的名字。
    • chmod +x ./tetris-sql/input.py: 在容器内执行的命令,用于将 input.py 文件设置为可执行。+x 选项使文件变为可执行文件。
image 4.png

运行

bash
复制代码
## 先开一个终端作为输入 docker exec -it pg ./tetris-sql/input.py
  • docker exec:
    • 用于在一个运行中的容器内执行命令。
  • it:
    • i: 代表“交互模式”(interactive),使容器保持打开状态并允许你与容器交互。
    • t: 代表“伪终端”(pseudo-TTY),为容器分配一个伪终端,这样你可以看到命令的输出并与其进行交互。it 选项组合通常用于运行需要用户交互的命令或查看命令输出的情况。
  • pg:
    • 这是容器的名字,指示在名为 pg 的容器中执行命令。
  • ./tetris-sql/input.py:
    • 这是在容器内执行的命令。这里,它指向容器内的 tetris-sql/input.py 脚本文件。执行这个文件时,Python 会运行这个脚本。
image 5.png

如果提示

exec ./tetris-sql/input.py: no such file or directory

What's next:

Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug pg

Learn more at https://docs.docker.com/go/debug-cli/

可能是python没装好,重新装一下。

bash
复制代码
## 再开一个终端作为俄罗斯方块的图形界面 docker exec pg psql -U postgres -f tetris-sql/game.sql
  • psql:
    • 这是 PostgreSQL 提供的命令行客户端工具,用于与 PostgreSQL 数据库进行交互。
  • U postgres:
    • 这是 psql 命令的一个选项,指定连接到 PostgreSQL 数据库的用户。U 选项后面的 postgres 是用户名。在 PostgreSQL 中,postgres 是默认的超级用户账号。
  • f tetris-sql/game.sql:
    • 这是 psql 命令的一个选项,指定要执行的 SQL 脚本文件。f 选项后面的 tetris-sql/game.sql 是 SQL 脚本的路径。这个脚本会在 PostgreSQL 数据库中执行。
image 6.png
0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
红红
作者分享
如何判断字符串缓冲区是被单个线程使用还是多个线程使用?
2
有没有前端小伙伴把用户中心项目优化一下的? 我是后端,写了一些接口。但是目前能力,把查询搜索,编辑用户信息这些接口对上有点难。目前自己只把验证码给对上了。有没有小伙伴给我借鉴一下前端代码的?
4
早上5:30起床,弄了用户中心的项目。碰到一些问题,以下是解决方案。刚跟第一个视频的小伙伴如果碰到希望有帮助。 1、idea创建springboot项目的java选项中没有8。我就直接创建一个空项目,然后再找鱼皮的源码,把pom文件导一下就好了,项目结构,启动类再自己创建一下。 2、测试的时候,使用Autowired注入不了UserMapper,在测试类的SpringBootTest注解里写上项目的启动类就行。
18
很想早起学习,但是总是起不来。有没有同学有早起小妙招教我一下?
19
#自我介绍# 背景:杭州 23届专升本 跨境电商 java后端  工作经历:实习:电商公司 后台管理系统,改了一些小bug。写了一些增删改查小需求,Excel导入数据,查询数据什么的。 目前公司:AI公司(现在的) “AI 行业报告编写”项目。但是实际上是打杂,完全没有机会写代码,甚至改bug机会也几乎没有。会做一些测试的活,看看数据库数据对不对这样。 学习情况: 学了java基础,Mysql,JDBC(已经忘的差不多了),Serlvet,Git,Maven,Spring,SpringMVC,Mybatis,MybatisPlus,Redis。基础差,网上那些java基础面试题80%都回答不出来框架技术水平仅停留在跟着视频敲一遍的程度,自己脑海里没有形成一个体系,所以面对面试题脑袋空空。还没有完整做过一个项目 第一年来星球的第一个小目标: 提升技术能力,在秋招拿到10k的薪资。 目标拆解: 提升项目能力,依此选择三个由易到难的项目练习。第一个先定苍穹外卖吧。 提高技术掌握程度,每周输出一篇技术文档。 秋招之前开始刷面试题,改简历。 关于我能提供的: 热爱踢足球,在杭州每周五晚都尽量组球局。新手友好,欢迎大家找我约球。 心态乐观,毕业从内耗自卑变得更加积极向上。如果有初入职场的同学跟我一样,欢迎和我交流,我们一起减少内耗,变得更强
14
下载 APP