我解决了文件所有者的问题,这是pecuilar的linux用户,什么是错误的,在我的dockerfile?

lnlaulya  于 2023-01-01  发布在  Docker
关注(0)|答案(1)|浏览(156)

如上所述,我有一个文件所有者的问题与Laravel安装。https://www.fullstaq.com/knowledge-hub/blogs/docker-and-the-host-filesystem-owner-matching-problem这个网站有解决方案。但在这个网站上的dockerfile的例子是为debian。
我想创建apache dockerfile.so不适合我想做的事情。
下面是我的dockerfile和docker-compose.yml。

# Dockerfile 

FROM php:7.3-apache

COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf

COPY --from=composer:2.0 /usr/bin/composer /usr/bin/composer

RUN apt-get update  \
    && apt-get -y install \
    git \
    zip \
    unzip \
    vim \
    && docker-php-ext-install pdo_mysql bcmath mbstring \
    && a2enmod rewrite
    
WORKDIR /var/www/html

EXPOSE 80

# I added below the code,but An error occurred with the code. 
ARG uid
RUN useradd -G www-data,root -u $uid -d /home/devuser devuser
RUN mkdir -p /home/devuser/.composer && \
    chown -R devuser:devuser /home/devuser
# docker-compose.yml

version: '3'
services:
  backend:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
    ports:
      - "80:80"
    volumes:
      - ./src/backend:/var/www/html
      # - /etc/group:/etc/group:ro
      # - /etc/user:/etc/user:ro
    depends_on:
      - db

  db:
    build:
      context: ./docker/mysql
      dockerfile: Dockerfile
    command: --default-authentication-plugin=mysql_native_password
    ports:
      - "3306:3306"
    volumes:
      - ./docker/mysql/data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=pass

我的文件夹有什么问题?
谢谢你的帮助。

nwlls2ji

nwlls2ji1#

你来这里的错误是

useradd: invalid user ID '-d'

这是因为

ARG uid
RUN useradd -G www-data,root -u $uid -d /home/devuser devuser

您指定了在以下RUN指令中使用的内部版本ARG。但在使用docker-compose生成映像时,没有为该ARG指定实际值。
因此,在构建时,它将被替换为空字符串,并且执行的命令变为

useradd -G www-data,root -u -d /home/devuser devuser

您需要使用docker-compose.yml中的args属性为uid指定一个值(即主机系统上用户的uid):

services:
  backend:
    build:
      context: ./docker/php
      dockerfile: Dockerfile
      args:
        uid: 1000
        # or using env variables:
        # uid: $HOST_UID

相关问题