用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 镜像,并基于这个镜像创建和运行容器。
有时候可能网不好会失败,多执行几次。这样就成功啦
在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选项使文件变为可执行文件。
运行
▼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 会运行这个脚本。
- 这是在容器内执行的命令。这里,它指向容器内的
如果提示
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 数据库中执行。
- 这是

评论
问答助学
相关内容
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
