用docker把代码部署到云服务器,访问不了api,首先排查了一下docker是否正常运行
:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
75e2c74b14cc mangosteen:20230929-231217 "/bin/sh -c 'bundle …" 13 minutes ago Exited (1) 13 minutes ago mangosteen-prod-1
3e8a253354ab postgres:14 "docker-entrypoint.s…" 11 hours ago Up 10 hours 5432/tcp db-for-mangosteen
cbeb737cab6d hello-world "/hello" 3 days ago Exited (0) 3 days ago inspiring_meninsky
0065c80e4e9c hello-world "/hello" 3 days ago Exited (0) 3 days ago friendly_elion
mangosteen-prod-1不能正常运行的,那就查看一下这个docker死之前发生了什么事情
:~$ docker logs 75e2c74b14cc
百度找到解决方法:Rails:ActiveSupport :: MessageEncryptor :: InvalidMessage | 码农家园 (codenong.com)
重新创建密钥
之前没有创建过 config/master.key
和 config/credentials.yml.enc
两个文件
//在当前项目的文件夹命令输入以下两个命令
:~$ rm config/credentials.yml.enc
//这个命令会用vscode打开文件夹
:~$ EDITOR="code --wait" bin/rails credentials:edit
打开的文件夹内容应该是这样,没有的话就自己输入
secret_key_base: xxx
email_password: xxx
hmac_secret: xxx
可以新开一个终端,通过这个命令 bin/rake secret
获取随机数
把生成的三个随机数替换掉上面的xxx
然后回到最初开始的项目文件夹终端,输入以下命令
bin/rails credentials:edit --environment production
然后就可以了