我有一个在docker容器中运行的python服务器。我通过python登录来记录我的消息,我不知道如何从容器中查找/查看我的日志文件。
# Pull base image
FROM python:3
# Copy code to the container
ADD src /usr/app
WORKDIR /usr/app
# run configuration
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Start script
CMD [ "python", "./main.py"]
我像这样启动服务器:
sudo docker run -it -p 5000:5000 --rm my_app
如何访问服务器日志?
由于
答案 0 :(得分:2)
我认为您可以在“docker run”中使用-v参数将主机文件夹挂载到容器中的文件夹。
//check is inputs has value
if (empty($_POST['catname'])) {
$errors[] = 'Ξεχάσατε το όνομα της κατηγορίας!';
}else{
$stmt=$conn->prepare("SELECT cn_id FROM food_category WHERE catname= :catname");
$stmt->bindParam(':catname', $_POST['catname'], PDO::PARAM_STR);
$stmt->execute();
$catres= $stmt->fetch(PDO::FETCH_ASSOC);
if(count($catres) > 0 ){
$cn_id= $catres['cn_id'];
}else{
$cn_id=0;
}
}
if (empty($_POST['catname_en'])) {
$errors[] = 'Ξεχάσατε το όνομα της κατηγορίας στα Αγγλικά!';
}else{
$stmt2=$conn->prepare("SELECT cn_id FROM food_category_en WHERE catname= :catname_en");
$stmt2->bindParam(':catname_en', $_POST['catname_en'], PDO::PARAM_STR);
$stmt2->execute();
$catresen= $stmt2->fetch(PDO::FETCH_ASSOC);
if(count($catresen) > 0 ){
$cn_id_en= $catresen['cn_id'];
}else{
$cn_id_en=0;
}
}
if(empty($errors)){
//pdo trasaction
$conn->beginTransaction();
try{
if($cn_id == 0){
$stmt1= $conn->prepare("INSERT INTO food_category (catname) VALUES (:catname)");
$stmt1->bindParam(':catname', $_POST['catname'], PDO::PARAM_STR);
$stmt1->execute();
$cn_id= $conn->lastInsertId();
echo "id1=" . $cn_id;
}
if($cn_id_en == 0){
$stmt3= $conn->prepare("INSERT INTO food_category_en (catname) VALUES (:catname_en)");
$stmt3->bindParam(':catname_en', $_POST['catname_en'], PDO::PARAM_STR);
$stmt3->execute();
$cn_id_en= $conn->lastInsertId();
}
$stmt4=$conn->prepare("INSERT INTO food_category_main (st_id, cn_id, cn_id_en, catcount) VALUES (:st_id, :cn_id, :cn_id_en, :catcount)");
$stmt4->bindParam(':st_id', $_POST['st_id'], PDO::PARAM_INT);
$stmt4->bindParam(':cn_id', $cn_id, PDO::PARAM_INT);
$stmt4->bindParam(':cn_id_en', $cn_id_en, PDO::PARAM_INT);
$stmt4->bindParam(':catcount', $noc, PDO::PARAM_INT);
$stmt4->execute();
$stmt5=$conn->prepare("UPDATE magazia_main SET noc= :noc WHERE st_id= :st_id");
$stmt5->bindParam(':st_id', $_SESSION['st_id'], PDO::PARAM_INT);
$stmt5->bindParam(':noc', $noc, PDO::PARAM_INT);
$stmt5->execute();
$conn->commit();
header ("Location:dashboard.php?store=".$_SESSION['name']);
exit;
}catch(Exception $e){
//An exception has occured, which means that one of our database queries
//failed.
//Print out the error message.
echo $e->getMessage();
//Rollback the transaction.
$conn->rollBack();
}
然后,您将在hostPath中查看您的日志(它被映射到容器中的containerPathContainingLogs)。
或者换句话说,如果您的泊坞窗图片包含bash,您可以使用docker ps -a来查找您运行的容器ID,并使用“docker exec -it your-container-id bash”来登录您的容器,cd到您的日志路径并查看您的日志。
或者您可以尝试使用docker log your-container-id。
答案 1 :(得分:1)
您始终可以通过以下方式检查服务的直接泊坞机输出:
docker logs my-container-instance
要检查日志路径文件,您可以使用:
docker inspect my-cintainer-instance
并在json输出上找到LogPath
键。
答案 2 :(得分:0)
docker logs --tail 200 -f docker-container-id
答案 3 :(得分:0)
除了要将日志重定向到文件时给出的答案,请使用此
docker logs containername>&日志文件
答案 4 :(得分:0)
只需使用此命令:
docker logs CONTAINER ID
(例如:docker 日志 c587105f2a4f)
要获取正在运行的容器和容器 ID,请使用以下命令:
docker ps