我是这个领域的新手,希望有人能帮助我。
所以我有一个后端项目,我需要在计算机打开时自动启动(我真的不在乎如何,使用systemd或rc.local,我的老板告诉我rc.local,但我猜要么会做)。我只需要启动一个docker容器,然后启动我的virtualenv然后运行该项目。
到目前为止,我已经在/etc/rc.local
docker start cassandratt #my docker container
sleep 20 #an ugly hack to give time for the container to start
cd /home/backend/
. venv/bin/activate
. /run.py
它不起作用,但是docker容器启动了,所以我猜问题是关于virtualenv或python,我真的不知道,因为我没有任何关于这个领域的经验。
关于如何实现它的任何想法?
提前致谢
修改
按照Samer的指导,我尝试在激活virtualenv之后创建一个文件夹并且它创建得很好,所以我想问题是尝试执行run.py,也许加载virtualenv的python?
docker start cassandratt #my docker container
cd /home/backend/
. venv/bin/activate
mkdir test #folder created fine
. /run.py
mkdir test2 #folder not created
答案 0 :(得分:0)
因此,部分解决方案似乎设置了一些变量而不是直接访问它们。至少这对我有用。感谢Samer给了我们一个很大的提示:)
HOME=/home/backend #the project path
docker start container
. $HOME/venv/bin/activate #activates the virtualenv of the project
/usr/bin/env python $HOME/run.py & #runs the run.py through virtualenv's python #and runs it in the background
exit 0