首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >🌹🌹原来Docker可以让这个情人💗节这么浪漫🌹🌹

🌹🌹原来Docker可以让这个情人💗节这么浪漫🌹🌹

原创
作者头像
萌萌哒草头将军
发布于 2025-02-13 07:31:49
发布于 2025-02-13 07:31:49
17400
代码可运行
举报
文章被收录于专栏:前端框架前端框架
运行总次数:0
代码可运行

📌 文章同步在公众号:萌萌哒草头将军,欢迎关注!

本文是正经的 docker 教程,如果你是老手了,请直接下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker push ctjj/like-girl:latest

如果你不打算使用 docker 那么直接拉取代码运行就可以了,如果你想使用 docker,但是无法下载,可以去我公众号后台回复:love,即可获得打包好的镜像

情人节马上要到了,正好最近发现了一个特别有意思的情侣相册的项目,遗憾的是目前不支持 docker,不过没关系,我出手了!

原项目地址:https://gitee.com/kiCode111/LikeGirl5.0.0

下面是制作情侣小站 镜像 的过程

情侣小站

Dockerfile

首先,我们拉去代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://gitee.com/kiCode111/LikeGirl_5.1.0.git

clone 代码后,在根目录下新建一个 Dockerfile 文件。

该文件用于自动化创建 Docker 镜像的过程。里面包含了运行这个应用所需的所有代码、库、依赖项和运行时环境。

由于该项目是php项目,所以我们需要指定基础镜像为php

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用基础的PHP镜像作为基础
FROM php:apache

# 设置工作目录
WORKDIR /app

RUN docker-php-ext-install pdo_mysql mysqli
# 拷贝目录下的所有文件到工作目录
COPY / /app

# 定义容器启动时执行的命令(例如:运行PHP的内置服务器)
CMD ["php", "-S", "0.0.0.0:8383", "-t", "/app"]

增加环境变变量

接下来需要注释几个环境变量,打开./admin/Config_DB.php 文件,将下面的变量注释或删除掉。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// localhost 为数据库地址 一般使用默认的即可 或(127.0.0.1)
// $db_address = "localhost";
//数据库用户名
// $db_username = "root";
//数据库密码
// $db_password = "123456";
//数据库表名
// $db_name = "LikeGirl20240612";
//敏感信息修改安全码 建议设置复杂一些
// $Like_Code = "Love";

准备好数据库

在你的机器上准备好 mysql 数据库,你可以使用 docker 镜像运行数据库或者服务器数据库,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run --name mysql5.7 \
  -e MYSQL_ROOT_PASSWORD=xxx \
  -e MYSQL_DATABASE=love \
  -e MYSQL_USER=root \
  -e MYSQL_PASSWORD=xxxx \
  -p 3306:3306 \
  -d mysql:5.7.22

image.png

然后使用数据库客户端链接,根据准备好的文件./love20240612.sql 执行 sql 创建命令,创建对应的表。

推荐使用 vscode 插件,链接数据库,打开 sql 文件点击执行按钮快速创建

image.png

打包和运行

现在我们可以在根目录下使用下面的命令打包:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build -t love_girl:latest

查看打包好的镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker images

保存到本地

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker save -o love_girl.tar love_girl:latest

-o 输出路径

上传到服务器后,我们还需要加载到服务器的 docker 镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker load -i /path/to/love_girl.tar

-i 从什么路径加载进去

查看是否加载进去镜像

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker images

一切成功后,我们可以启动了,一种是命令行启动:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d \
  --name love \
  --restart always \
  -p 1314:8383 \
  -e DB_PASSWORD="xxx" \
  -e DB_NAME="xxx" \
  -e DB_USERNAME="root" \
  -e LIKE_CODE="xxxx" \
  -e DB_ADDRESS="192.168.x.xxx" \
  like_girl

或者我们使用 docker-compose.yaml 文件启动!

在你准备好的目录下面创建文件:docker-compose.yaml,内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.2"

services:
  love:
    image: love_girl # 使用已创建的镜像
    ports:
      - "1314:8383"
    container_name: love
    restart: always
    environment:
      DB_PASSWORD: "xxx"
      DB_NAME: "xxx"
      DB_USERNAME: "root"
      LIKE_CODE: "xxxx"
      DB_ADDRESS: "192.168.x.xxx"

然后使用命令行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose up -d

-d 后台启动

查看状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose ps

关闭服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose down

好了,现在我们打开 http://localhost:1314 就可以看到首页了!

进入管理页面: http://localhost:1314/admin/!

上传dockerhub

tag

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker tag love_girl:latest ctjj/like-girl:latest

上传:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker push ctjj/like-girl:latest

如果你已经有自己的图床提供图片链接,那么到这里就结束了,如果你还没有,可以接着部署一个图床!

nginx部署

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/nginx/nginx.conf

添加如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
server {
    listen 80;
    server_name www.xxxx.com;

    location / {
        proxy_pass http://127.0.0.1:1314;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

重载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nginx -s reload

配置图床

我使用的是蓝空图床,项目地址:https://github.com/lsky-org/lsky-pro

如果你想要 docker 镜像,通用可以到我公众号后台回复:love,根据情况下载即可!

部署前,我们需要在上面提到的数据库中新增一个存放图片信息的库,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql -u root -p
CREATE DATABASE picture;
show DATABASES;

然后使用下面的命令运行安装蓝空图床,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network create lsky-net
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker run -d \
  --name lskypro \
  --restart unless-stopped \
  --hostname lskypro \
  -e WEB_PORT=8089 \
  -v ./web:/var/www/html/ \
  -p 9080:8089 \
  --network lsky-net \
  halcyonazure/lsky-pro-docker:latest

或者同样用 docker-compose.yaml文件启动!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.2"
services:
  lskypro:
    image: halcyonazure/lsky-pro-docker:latest
    restart: unless-stopped
    hostname: lskypro
    container_name: lskypro
    environment:
      - WEB_PORT=8089
    volumes:
      - ./web:/var/www/html/
    ports:
      - "9080:8089"
    networks:
      - lsky-net

networks:
  lsky-net: {}

或者参考这里:https://hub.docker.com/r/halcyonazure/lsky-pro-docker

然后在首页配置刚才创建的数据库,即可自动创建对应组件,等创建完成,我们就可以上传图片之后得到图片链接了!

总结

希望大家都可以通过这个教程博美人一笑!

另外为了增加浪漫气氛,建议大家还可以:

  • 偷偷换一个情侣壁纸
  • 提前买好花朵、红酒、烛台,准备一个浪漫的烛光晚餐
  • 提前做好一个手工作为礼物

我给我老婆做的手工戒指
我给我老婆做的手工戒指

元宵节快乐呀!提前祝大家情人节愉快~

最后文章中如果有错误的地方欢迎指正!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
2021-02-14:假设有排成一行的N个位置,记为1~N,N 一定大于或等于 2
2021-02-14:假设有排成一行的N个位置,记为1~N,N 一定大于或等于 2,开始时机器人在其中的M位置上(M 一定是 1~N 中的一个)。如果机器人来到1位置,那么下一步只能往右来到2位置;如果机器人来到N位置,那么下一步只能往左来到 N-1 位置;如果机器人来到中间位置,那么下一步可以往左走或者往右走;规定机器人必须走 K 步,最终能来到P位置(P也是1~N中的一个)的方法有多少种?给定四个参数 N、M、K、P,返回方法数。
福大大架构师每日一题
2021/02/14
4980
2020-02-24:arr是面值数组,其中的值都是正数且没有重复
福哥答案2020-02-24: 自然智慧即可。 1.递归。有代码。 2.动态规划。dp是二维数组。有代码。 代码用golang编写,代码如下: package main import ( "fmt" ) func main() { arr := []int{1, 2, 3} aim := 8 ret := minCoins1(arr, aim) fmt.Println("1.递归:", ret) ret = minCoins2(arr, aim) fmt.
福大大架构师每日一题
2021/02/24
4730
2020-02-24:arr是面值数组,其中的值都是正数且没有重复
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。如果arr长度为偶数,两个集合包含数的个数要一样多;如果arr长度为奇数,两个集合包含数的个数必须只差一个。请尽量让两个集合的累加和接近,返回最接近的情况下,较小集合的累加和。
福大大架构师每日一题
2021/02/25
3210
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。
2022-02-04:组合总和 Ⅳ。 给你一个由 不同 整数组成的数
给你一个由 不同 整数组成的数组 nums ,和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。
福大大架构师每日一题
2022/02/04
4810
2022-01-12:给定一个正数数组arr,长度为n,下标0~n-1, a
中间位置i需要达标,达标的条件是 : arri-1 > arri 或者 arri+1 > arri哪个都可以。
福大大架构师每日一题
2022/01/12
3720
2021-04-04:给定一个非负数组arr,和一个正数m的最大值。
2021-04-04:给定一个非负数组arr,和一个正数m。 返回arr的所有子序列中累加和%m之后的最大值。
福大大架构师每日一题
2021/04/04
9340
2021-04-04:给定一个非负数组arr,和一个正数m的最大值。
2021-05-06:给定一个二维数组matrix, 你可以从任何位置
2021-05-06:给定一个二维数组matrix, 你可以从任何位置出发,走向上下左右四个方向 。返回能走出来的最长的递增链长度。
福大大架构师每日一题
2021/05/06
5800
2021-05-06:给定一个二维数组matrix, 你可以从任何位置
2021-08-24:合并石头的最低成本。有 N 堆石头排成一排
2021-08-24:合并石头的最低成本。有 N 堆石头排成一排,第 i 堆中有 stonesi 块石头。每次移动(move)需要将连续的 K 堆石头合并为一堆,而这个移动的成本为这 K 堆石头的总数。找出把所有石头合并成一堆的最低成本。如果不可能,返回 -1 。
福大大架构师每日一题
2021/08/24
2640
2021-08-24:合并石头的最低成本。有 N 堆石头排成一排
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1。
福大大架构师每日一题
2024/04/11
1740
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?
福哥答案2021-02-16: 自然智慧即可。 1.普通递归。有代码。 需要判断同列和斜线。 2.位运算递归。有代码。 3.我的递归。有代码。 只需要判断斜线。 代码用golang编写,代码如下: package main import ( "fmt" "time" ) func main() { n := 12 fmt.Println(n, "皇后问题") fmt.Println("------") now := time.Now() fmt.P
福大大架构师每日一题
2021/02/16
3350
2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?
2021-06-16:返回一个数组中,选择的数字不能相邻的情况下, 最大子序列累加和。
2021-06-16:返回一个数组中,选择的数字不能相邻的情况下, 最大子序列累加和。
福大大架构师每日一题
2021/06/16
6790
2021-06-16:返回一个数组中,选择的数字不能相邻的情况下, 最大子序列累加和。
2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不
2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time,
福大大架构师每日一题
2024/01/05
2190
2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不
2021-07-02:正则表达式匹配。给定一个字符串s和一个匹配串p。“.“匹配单个字符
2021-07-02:正则表达式匹配。给定一个字符串s和一个匹配串p。"."匹配单个字符。""匹配左边元素的多个字符。判断p是否匹配s。比如s="ab",p="a.",返回true。比如s="ab",p="a",返回false。比如s="aaa",p="a",返回true。比如s="moonfdd",p="kmoonfdd",返回true,因为"*"表示零个或者多个,这里'k'表示0个。
福大大架构师每日一题
2021/07/02
4720
2021-07-02:正则表达式匹配。给定一个字符串s和一个匹配串p。“.“匹配单个字符
2021-02-11:如何求出两个字符串的最大公共子序列长度?
举例:"moonfudadayx"和"mfyudadxxax",最大公共子序列是"mfudadax",长度是8。
福大大架构师每日一题
2021/02/11
7260
2021-02-11:如何求出两个字符串的最大公共子序列长度?
2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应
2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应,那么一个数字字符串比如"111”就可以转化为:"AAA"、"KA"和"AK"。给定一个只有数字字符组成的字符串str,请问有多少种转化结果?
福大大架构师每日一题
2021/02/17
6180
2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应
2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在某些任务中,这个字符通常表示
现在,塔子哥面临一个问题,他有一个长度为 n 的字符串 s,它仅由 R 和 B 组成
福大大架构师每日一题
2023/09/09
2790
2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在某些任务中,这个字符通常表示
2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一
2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一个气球都能获得分数,假设打爆气 球 的分数为 X,获得分数的规则如下: 1)如果被打爆气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 L;如果被打爆气球的右边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 R。 获得分数为 L_X_R。 2)如果被打爆气球的左边有没被打爆的气球,找到离被打爆气球最近的气球,假设分数为 L;如果被打爆气球的右边所有气球都已经被打爆。获得分数为 L_X。 3)如果被打爆气球的左边所有的气球都已经被打爆;如果被打爆气球的右边有没被打爆的 气球,找到离被打爆气球最近的气球,假设分数为 R;如果被打爆气球的右边所有气球都 已经 被打爆。获得分数为 X_R。 4)如果被打爆气球的左边和右边所有的气球都已经被打爆。获得分数为 X。目标是打爆所有气球,获得每次打爆的分数。通过选择打爆气球的顺序,可以得到不同的总分,请返回能获得的最大分数。【举例】arr = {3,2,5} 如果先打爆3,获得3_2;再打爆2,获得2_5;最后打爆5,获得5;最后总分21 如果先打爆3,获得3_2;再打爆5,获得2_5;最后打爆2,获得2;最后总分18 如果先打爆2,获得3_2_5;再打爆3,获得3_5;最后打爆5,获得5;最后总分50 如果先打爆2,获得3_2_5;再打爆5,获得3_5;最后打爆3,获得3;最后总分48 如果先打爆5,获得2_5;再打爆3,获得3_2;最后打爆2,获得2;最后总分18 如果先打爆5,获得2_5;再打爆2,获得3_2;最后打爆3,获得3;最后总分19 返回能获得的最大分数为50。
福大大架构师每日一题
2021/05/04
3400
2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一
2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr
2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr,每个值表示 居民点的一维坐标,再给定一个正数 num,表示邮局数量。选择num个居民点建立num个 邮局,使所有的居民点到最近邮局的总距离最短,返回最短的总距离。【举例】arr=1,2,3,4,5,1000,num=2。第一个邮局建立在 3 位置,第二个邮局建立在 1000 位置。那么 1 位置到邮局的距离 为 2, 2 位置到邮局距离为 1,3 位置到邮局的距离为 0,4 位置到邮局的距离为 1, 5 位置到邮局的距 离为 2,1000 位置到邮局的距离为 0。这种方案下的总距离为 6, 其他任何方案的总距离都不会 比该方案的总距离更短,所以返回6。
福大大架构师每日一题
2021/05/04
5030
2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr
2021-06-08:一个字符串至少要切几刀能让切出来的子串都是回文串?
方法二、对字符串范围做是否是回文串的dp。dpi=true是i,j范围上是回文串,dpi依赖左下方。消耗O(N**2)的空间。
福大大架构师每日一题
2021/06/08
2340
2021-06-08:一个字符串至少要切几刀能让切出来的子串都是回文串?
2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号,
2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条,
福大大架构师每日一题
2023/12/14
2370
2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号,
推荐阅读
2021-02-14:假设有排成一行的N个位置,记为1~N,N 一定大于或等于 2
4980
2020-02-24:arr是面值数组,其中的值都是正数且没有重复
4730
2021-02-25:给定一个正数数组arr,请把arr中所有的数分成两个集合。
3210
2022-02-04:组合总和 Ⅳ。 给你一个由 不同 整数组成的数
4810
2022-01-12:给定一个正数数组arr,长度为n,下标0~n-1, a
3720
2021-04-04:给定一个非负数组arr,和一个正数m的最大值。
9340
2021-05-06:给定一个二维数组matrix, 你可以从任何位置
5800
2021-08-24:合并石头的最低成本。有 N 堆石头排成一排
2640
2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回
1740
2021-02-16:n皇后问题。给定一个整数n,返回n皇后的摆法有多少种?
3350
2021-06-16:返回一个数组中,选择的数字不能相邻的情况下, 最大子序列累加和。
6790
2024-01-03:用go语言,给你两个长度为 n 下标从 0 开始的整数数组 cost 和 time, 分别表示给 n 堵不
2190
2021-07-02:正则表达式匹配。给定一个字符串s和一个匹配串p。“.“匹配单个字符
4720
2021-02-11:如何求出两个字符串的最大公共子序列长度?
7260
2021-02-17:规定1和A对应、2和B对应、3和C对应...26和Z对应
6180
2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在某些任务中,这个字符通常表示
2790
2021-04-29:给定一个数组 arr,代表一排有分数的气球。每打爆一
3400
2021-04-30:一条直线上有居民点,邮局只能建在居民点上。给定一个有序正数数组arr
5030
2021-06-08:一个字符串至少要切几刀能让切出来的子串都是回文串?
2340
2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号,
2370
相关推荐
2021-02-14:假设有排成一行的N个位置,记为1~N,N 一定大于或等于 2
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档