有1个服务器、有一个python脚本(这个脚本包含一个python脚本+配置文件),需要将这个python脚本放在linux服务器上运行。
1、同一个目录下放:python代码、ini配置文件、dockerfile
dockerfile文件内容(因为我这个脚本是用于产生数据的,我运行方式是在容器启动后去容器内部通过python xxx.py来运行这个代码,如果需要启动容器就运行程序,那这儿需要添加command python xxx.py):
powershell
FROM dockerhub.xxx.com/xxx/xxx:amd64
WORKDIR /app
COPY ./ /app
2、构建镜像
把这个目录下的3个文件放在服务器上,执行命令:docker build -t mock .
(mock表示镜像名称,我这儿构建后放在了本地,如果需要推到远程仓库,补充地址即可)
3、启动容器
因为我配置文件需要从服务器映射进去,因此我需要把服务器的目录挂载到容器内的的目录/app,
根据我的配置文件/home/{user}/mock_alarm/config.ini
内容为:
c
[settings]
zip_file_path = /app/source/xxx.zip
output_folder = /app/output/
target_folder = /app/target/
因此我的创建容器命令为:
bash
docker run -it \
-v /home/{user}/mock_alarm/config.ini:/app/config.ini \
-v /home/{user}/source:/app/source \
-v /home/{user}/output:/app/output \
-v /home/{user}/target:/app/target \
7e21e94f7936 sh
其中7e21e94f7936
是我构建的镜像id
这儿仅启动一个容器,并没有运行代码,因为我想去容器内部启动程序
4、进入容器启动程序
进入容器:
bash
docker exec -it {容器id或容器名称} sh
后台启动程序:
bash
nohup python mock_alarm.py > /app/logs/app.log 2>&1 &
ps:
通过ps命令查看这个容器内的后台运行任务的情况:
也可通过 kill {pid}
来结束某个程序