抛砖引玉:用DOCKER在$6刀服务器上跑多个HTTPS网站

h
hitmantb
楼主 (未名空间)

个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
)服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透明太多了。 这么多年从来没多收过我钱。

大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/NODEJS/DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
验个新东西,还是想拆下一个组件,都随心所欲。

安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
docker-on-ubuntu-18-04

1) 我大部分小网站用的是NODE/EXPRESS,在文件夹里加个dockerfile, 记得用alpine
的image,可以让文件大小缩水90%。

基础Dockerfile: https://pastebin.com/VEqsj7Ub

不需要的文件可以放在.dockerignore里面:

基础.dockerignore: https://pastebin.com/azPsTzVp

2) 然后build image

docker build -t docker_username/app1 .

3) 因为不愿意买docker付费版,就在本地打包成TAR文件

docker save docker_username/app1 > app1.tar

4) SFTP上传到服务器以后,安装image

docker load -i app1.tar

5) 在服务器上创建我这个docker-compose.yml(记得改域名和app名),用docker-
compose启动NGINX PROXY和LETSENCRYPT, docker会自动安装NGINX-PROXY和
LETSENCRYPT,
然后自动HTTPS保护你的网站。

下载docker-compose.yml: https://pastebin.com/WtMS204h (请修改域名和APP名)

然后运行:docker-compose up -d

看着一个一个网站启动,真的很舒服。 最妙的是更新一个网站,安装新IMAGE然后重新docker-compose up -d他只会重启你更新过的网站。 如果你服务器重启,因为加了
restart: always, 所有组件也自动重启。

抛砖引玉,这里高手肯定很多,希望大家多分享DEVOPS的经验。其实这么简单的流程,我从学习,找教程,踩坑,折腾了足足八个小时才搞定 。 。 。
w
wdong

docker是个好东西。 static IP就值不止这6刀。

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

y
yhangw

建议看一下aws lightsail的1g instance. 下面用的和ec2 instance一样。 但收费是
明明白白的而且可以按小时prorated。

其实你网站要数据量流量不夸张,买reserved instance其实也还成。

$5
USD/mo
1 GB Memory
1 Core Processor
40 GB SSD Disk
2 TB Transfer*

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

h
hitmantb

感谢分享! 我搬家还不太容易,有几个小网站是领导业余项目,DOMAIN不在我们手上
,要改IP的话,她还得去联系客户。 这个价格的确好,我下个服务器开马鬃试试。 他的IP是不动的吗? 类似DIGITAL OCEAN那样,除非DESTROY DROPLET, 否则永远不改IP?

前两个月玩Amazon Lambda, 需要一个固定IP,就加了一个Nat Gateway, 结果两个月收费60刀。第一个月我根本没注意,因为我AWS SURVEY拿了$30刀的CREDIT。

【 在 yhangw (老妖) 的大作中提到: 】
: 建议看一下aws lightsail的1g instance. 下面用的和ec2 instance一样。 但收费是
: 明明白白的而且可以按小时prorated。
: 其实你网站要数据量流量不夸张,买reserved instance其实也还成。
: $5
: USD/mo
: 1 GB Memory
: 1 Core Processor
: 40 GB SSD Disk
: 2 TB Transfer*
: NODEJS/

a
ananpig

good

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

y
yhangw

可以绑定固态ip

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 感谢分享! 我搬家还不太容易,有几个小网站是领导业余项目,DOMAIN不在我们手上
: ,要改IP的话,她还得去联系客户。 这个价格的确好,我下个服务器开马鬃试试。 他
: 的IP是不动的吗? 类似DIGITAL OCEAN那样,除非DESTROY DROPLET, 否则永远不改IP?
: 前两个月玩Amazon Lambda, 需要一个固定IP,就加了一个Nat Gateway, 结果两个月收
: 费60刀。第一个月我根本没注意,因为我AWS SURVEY拿了$30刀的CREDIT。

r
repast

第一次听说 lightsail...

各种云服务种类太多,用得价格有时候都不清楚,性价比怎样更只能冷暖自知。
大家多分享太好了。

【 在 yhangw (老妖) 的大作中提到: 】
: 建议看一下aws lightsail的1g instance. 下面用的和ec2 instance一样。 但收费是
: 明明白白的而且可以按小时prorated。
: 其实你网站要数据量流量不夸张,买reserved instance其实也还成。
: $5
: USD/mo
: 1 GB Memory
: 1 Core Processor
: 40 GB SSD Disk
: 2 TB Transfer*
: NODEJS/

c
chunjuan

基本和我现在一样
我这边是4g的机器跑了40多个网站

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

s
squirrelrun

学习了,多谢分享。

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

r
repast

你数据库和网站一般是分开在几个 docker container里面呢,还是挤在一个 docker
里面?
不挤在一起就无法随便拆一个网站下来吧?

用 Digital Ocean 得自己配 nginx, 数据库之类的,
倒是花费比较固定是个好事。

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

c
chunjuan

我的设置是有个大的postgres是大家一起用
反正加起来也没啥流量 迁移备份 管理比较方便
然后redis是各用各的
有几个用sqlite是各管各的
【 在 repast (xebec) 的大作中提到: 】
: 你数据库和网站一般是分开在几个 docker container里面呢,还是挤在一个 docker
: 里面?
: 不挤在一起就无法随便拆一个网站下来吧?
: 用 Digital Ocean 得自己配 nginx, 数据库之类的,
: 倒是花费比较固定是个好事。
: NODEJS/

l
longtian

aws route 53那都要交钱

nginx你也可以用现成的docker image,什么都设置好了,更方便

【 在 repast (xebec) 的大作中提到: 】
: 你数据库和网站一般是分开在几个 docker container里面呢,还是挤在一个 docker
: 里面?
: 不挤在一起就无法随便拆一个网站下来吧?
: 用 Digital Ocean 得自己配 nginx, 数据库之类的,
: 倒是花费比较固定是个好事。
: NODEJS/

r
repast

对,为什么要用 route 53? 在域名的 DNS 配置里面加个 CNAME 配置就行了吧?
EC2 主机只有 ip 吗? 狗的 app engine,heroku都可以有主机名的。

【 在 longtian (有人的地方,就有江湖) 的大作中提到: 】
: aws route 53那都要交钱
: nginx你也可以用现成的docker image,什么都设置好了,更方便

z
zyy

pretty good,damn cheap,但感觉not mainstream,自己玩玩可以,招工的只认AWS, Azure或者Google cloud,and no GPU support
h
hitmantb

也可以用Amazon AWS上的Light Sail, 其实EC2也一样操作,只不过收费不透明而已。

【 在 zyy (无聊(自由泳,众议院,众议员,中医院)) 的大作中提到: 】
: pretty good,damn cheap,但感觉not mainstream,自己玩玩可以,招工的只认AWS,
: Azure或者Google cloud,and no GPU support

r
romi

同用$5的droplet。
他们家的dns配置界面非常友好,还提供动态dns script。我还用traefik docker自动
配置和更新ssl cert。
主要问题25g不够经常要清docker image,有一次整个instance数据全没了。

【 在 wdong(万事休) 的大作中提到: 】

: docker是个好东西。 static IP就值不止这6刀。

: NODEJS/

r
repast

我也开始用 DO droplet 了,
这个 droplet 大家一般都用 ubuntu 还是 debian?or CentOS? CentOS 感觉包太老了。

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

c
chunjuan

debian lts
【 在 repast (xebec) 的大作中提到: 】
: 我也开始用 DO droplet 了,
: 这个 droplet 大家一般都用 ubuntu 还是 debian?or CentOS? CentOS 感觉包太老了。
: NODEJS/

a
ananpig

装 VPN server 怎么样?

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

h
hamsterdam4

这种你怎么共享80/443端口?

比如https://www.aaa.com和https://www.bbb.com?

【 在 chunjuan (👍春卷🐱更多春卷👍) 的大作中提到: 】
: 基本和我现在一样
: 我这边是4g的机器跑了40多个网站
: NODEJS/

p
pptwo

nginx
【 在 hamsterdam4 (蜜桃BB霜) 的大作中提到: 】
: 这种你怎么共享80/443端口?
: 比如https://www.aaa.com和https://www.bbb.com?

h
hamsterdam4

反向代理不是来proxy到www.aaa.com/bbb, www.aaa.com/ccc这样的吗?

不同的域名也可以?
【 在 pptwo (pp) 的大作中提到: 】
: nginx

p
pptwo

可以的。
【 在 hamsterdam4 (蜜桃BB霜) 的大作中提到: 】
: 反向代理不是来proxy到www.aaa.com/bbb, www.aaa.com/ccc这样的吗?
: 不同的域名也可以?

h
hamsterdam4

好的,谢谢大侠,我去学习下
【 在 pptwo (pp) 的大作中提到: 】
: 可以的。

t
topcoderr

heroku推荐么?

r
repast

挺好用的,PaaS省事。

【 在 topcoderr (topcoder) 的大作中提到: 】
: heroku推荐么?

r
repast

docker 乱改防火墙的问题你 fix 了没?https://github.com/chaifeng/ufw-docker#tldr

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

s
squirrelrun

多谢分享。

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

c
chebyshev

I will also setup one soon.

Thanks
【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

r
repast

不错很有用。

第3, 4 两步可以这样 one liner 做:
$ docker save user/server | gzip -9 | ssh droplet 'cat | gzip -d | docker
load'

【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

d
dumbCoder

主要的配置工作在 Nginx, 完全不要 Docker 也行...
h
huige

你在什么地方做的postgreSQL?大概什么价格?
我在azure上做mySQL发现不便宜。
谢谢
【 在 hitmantb (hitmantb) 的大作中提到: 】
: 个人小东西,弄了一圈还是觉得Digital Ocean这个$6刀(其实是五刀,自动备份一刀
: )服务器是强无敌。 25GB SSD, 1GB内存,1TB流量,还自带STATIC IP,比马鬃收费透
: 明太多了。 这么多年从来没多收过我钱。
: 大部分小网站,这么一个服务器跑四五个都真的太浪费了,我就用DOCKER把每个网站封
: 装了起来。 DOCKER的好处就是保证每个程序互不干扰。 你无论是WORDPRESS/
NODEJS/
: DJANGO,MYSQL/MONGODB,服务器本身是永远干干净净的,绝不会互相干扰。无论想试
: 验个新东西,还是想拆下一个组件,都随心所欲。
: 安装DOCKER和DOCKER-COMPOSE用这个教程就可以了:
: https://www.digitalocean.com/community/tutorials/how-to-install-and-use-
: docker-on-ubuntu-18-04
: ...................

c
cofounder

性能不行啊,跑了几个docker container一晚上全死了,跑kafka一晚上也玩完,跟
java沾边的都活不长久

w
wdong

6块钱还想干嘛。 我刚刚弄了一个做静态网站。

【 在 cofounder (合伙人) 的大作中提到: 】
: 性能不行啊,跑了几个docker container一晚上全死了,跑kafka一晚上也玩完,跟
: java沾边的都活不长久

c
chebyshev

Amzon lightsail $3.5 Month, static IP.

I launched one for hosting the COVID-19 figures/numbers.
【 在 wdong (万事休) 的大作中提到: 】
: 6块钱还想干嘛。 我刚刚弄了一个做静态网站。

r
repast

静态网站不是在 github 放?或者放Cloud Storage基本免费。

【 在 wdong (万事休) 的大作中提到: 】
: 6块钱还想干嘛。 我刚刚弄了一个做静态网站。