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
Setting a default value to your ARG uid can works:
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.
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