首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法运行指定自定义用户的监控器

无法运行指定自定义用户的监控器
EN

Stack Overflow用户
提问于 2022-09-25 17:50:02
回答 2查看 100关注 0票数 0

我正在构建一个Laravel映像,它与具有id backend的用户1000一起运行。此用户应允许我防止以下错误:

无法在附加模式下打开

文件:打开流失败:权限被拒绝

问题是,当我运行主管时,我会发现以下错误:

IOError: Errno 13权限被拒绝:‘/var/log/visord.log’

这是我的Dockerfile:

代码语言:javascript
复制
FROM php:8.1.10-fpm-buster

WORKDIR /var/www

RUN docker-php-ext-install bcmath pdo_mysql

RUN apt-get update
RUN apt-get install -y git zip unzip netcat

# Supervisor
RUN apt-get install -y supervisor

# Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# Configurations
COPY docker/php/config/supervisor.conf /etc/supervisord.conf
COPY docker/php/config/php.ini /usr/local/etc/php/conf.d/app.ini

# Log file
RUN mkdir /var/log/php
RUN touch /var/log/php/errors.log && chmod 777 /var/log/php/errors.log

# Deploy
COPY /docker/php/scripts/start.sh /start.sh
RUN chmod +x /start.sh

# Add user for laravel application
RUN groupadd -g 1000 backend
RUN useradd -u 1000 -ms /bin/bash -g backend backend

# Copy existing application directory contents
COPY . /var/www

# Copy existing application directory permissions
COPY --chown=backend:backend . /var/www

USER backend

EXPOSE 9000

ENTRYPOINT /start.sh

这是我的停靠-撰写文件:

代码语言:javascript
复制
version: '3.9'

services:

  php:
    container_name: ${APP_NAME}_app
    #user: ${CURRENT_UID}
    restart: always
    build:
      context: .
      dockerfile: ./docker/php/Dockerfile
    volumes:
      - ./src:/var/www
    env_file: .env

这是入口点脚本:

代码语言:javascript
复制
#!/bin/bash

# Run composer install
composer install

# Generate key and clear cache
php artisan key:generate
php artisan config:clear
php artisan config:cache

# Wait db connection
until nc -z ${DB_HOST} ${DB_PORT}; do sleep 1; echo "Wait database ..."; done

# Execute migrations
php artisan migrate --seed

/usr/bin/supervisord -c /etc/supervisord.conf

最后但并非最不重要的是,supervisor.conf:

代码语言:javascript
复制
[supervisord]
nodaemon=true
loglevel = info
logfile=/var/log/supervisord.log
pidfile=/var/run/supervisord.pid

[group:laravel-worker]
priority=999
programs=laravel-app,laravel-schedule,laravel-notification,laravel-queue

[program:laravel-app]
priority=5
autostart=true
autorestart=true
stderr_logfile_maxbytes=0
stdout_logfile_maxbytes=0
command=/usr/local/sbin/php-fpm -R
stderr_logfile=/var/log/php/php-error.log
stdout_logfile=/var/log/php/php-access.log

[program:laravel-schedule]
numprocs=1
autostart=true
autorestart=true
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan schedule:run
stdout_logfile=/var/log/php/schedule.log

[program:laravel-notification]
numprocs=1
autostart=true
autorestart=true
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan notification:worker
stdout_logfile=/var/log/php/notification.log

[program:laravel-queue]
numprocs=5
autostart=true
autorestart=true
redirect_stderr=true
process_name=%(program_name)s_%(process_num)02d
stdout_logfile=/var/log/php/worker.log
command=php /var/www/artisan queue:work sqs --sleep=3 --tries=3

有什么办法解决许可问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-25 19:35:32

这是我的supervisord.conf作为一个例子。我总是添加user=root行。也没有得到任何许可错误。

代码语言:javascript
复制
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=1
redirect_stderr=true
票数 0
EN

Stack Overflow用户

发布于 2022-09-25 21:23:35

由于在Docker文件中使用USER backend,因此需要配置主管,以便在Docker文件user=backend中使用相同的用户。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73846658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档