skip to Main Content

I’m trying to use a docker image with Laravel + Microsoft SQL drivers.

My dockerfile:

FROM php:7.2-apache

ENV ACCEPT_EULA=Y

# Microsoft SQL Server Prerequisites
RUN apt-get update 
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - 
    && curl https://packages.microsoft.com/config/debian/9/prod.list 
        > /etc/apt/sources.list.d/mssql-release.list 
    && apt-get install -y --no-install-recommends 
        locales 
        apt-transport-https 
    && echo "en_US.UTF-8 UTF-8" > /etc/locale.gen 
    && locale-gen 
    && apt-get update 
    && apt-get -y --no-install-recommends install 
        unixodbc-dev 
        msodbcsql17

RUN docker-php-ext-install mbstring pdo pdo_mysql 
    && pecl install sqlsrv pdo_sqlsrv xdebug 
    && docker-php-ext-enable sqlsrv pdo_sqlsrv xdebug

COPY index.php /var/www/html/


# We need a user with the same UID/GID as the host user
# so when we execute CLI commands, all the host file's permissions and ownership remain intact.
# Otherwise commands from inside the container would create root-owned files and directories.
ARG uid
RUN useradd -G www-data,root -o -u $uid -d /home/devuser devuser
RUN mkdir -p /home/devuser/.composer && 
    chown -R devuser:devuser /home/devuser

When building using docker-compose build, I am getting invalid user:

useradd: invalid user ID '-d'
The command '/bin/sh -c useradd -G www-data,root -o -u $uid -d /home/devuser devuser' returned a non-zero code: 3

3

Answers


  1. Setting a default value to your ARG uid can works:

    Login or Signup to reply.
  2. In my case the reason was, that I tried to build the image directly using

    docker build --tag imagename .

    instead of using

    docker-compose build app

    from where the $uid value was supplied.

    Login or Signup to reply.
  3. You have to specify the UID in your .env file like:

    UID=1000

    if you do not know the UID of your user, type id into your terminal

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search