-1

Ok so here is the goal, use Laravel Sail with PHP 8.3, but I need to connect to an external MS SQL server, thus I need MS SQL drivers. Here are the instructions on how to install the drivers: https://learn.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-server-ver16#installing-on-ubuntu However, I keep running into errors when trying to build the image.

Here is my docker file:

Copy
FROM ubuntu:22.04

LABEL maintainer="Taylor Otwell"

ARG WWWGROUP
ARG NODE_VERSION=20
ARG POSTGRES_VERSION=15

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80"

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update \
    && mkdir -p /etc/apt/keyrings \
    && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch \
    && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    && apt-get update \
    && apt-get install -y php8.3-cli php8.3-dev \
       php8.3-pgsql php8.3-sqlite3 php8.3-gd \
       php8.3-curl \
       php8.3-imap php8.3-mysql php8.3-mbstring \
       php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \
       php8.3-intl php8.3-readline \
       php8.3-ldap \
       php8.3-msgpack php8.3-igbinary php8.3-redis php8.3-swoole \
       php8.3-memcached php8.3-pcov php8.3-imagick php8.3-xdebug \
    && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
    && apt-get update \
    && apt-get install -y nodejs \
    && npm install -g npm \
    && npm install -g pnpm \
    && npm install -g bun \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
    && apt-get update \
    && apt-get install -y yarn \
    && apt-get install -y mysql-client \
    && apt-get install -y postgresql-client-$POSTGRES_VERSION \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && apt-get update && apt-get install -y --no-install-recommends \
        apt-transport-https \
        curl \
        gnupg \
        unixodbc-dev \
    && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    # && curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list \
    && sh -c "curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sed 's/amd64/arm64/g' > /etc/apt/sources.list.d/mssql-release.list" \
    && apt-get update \
    && ACCEPT_EULA=Y apt-get install -y msodbcsql18 \
    && pecl install sqlsrv \
    && pecl install pdo_sqlsrv \
    && echo "extension=sqlsrv.so" > /etc/php/8.3/mods-available/sqlsrv.ini \
    && echo "extension=pdo_sqlsrv.so" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini \
    && phpenmod -v 8.3 sqlsrv pdo_sqlsrv \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.3

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/8.3/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 8000

ENTRYPOINT ["start-container"]

Here is the error I am getting when trying to build the image:

...
103.1 Selecting previously unselected package libodbcinst2:arm64.
103.1 Preparing to unpack .../4-libodbcinst2_2.3.9-5_arm64.deb ...
103.1 Unpacking libodbcinst2:arm64 (2.3.9-5) ...
103.1 Selecting previously unselected package unixodbc-dev:arm64.
103.1 Preparing to unpack .../5-unixodbc-dev_2.3.9-5_arm64.deb ...
103.1 Unpacking unixodbc-dev:arm64 (2.3.9-5) ...
103.2 Setting up apt-transport-https (2.4.11) ...
103.2 Setting up unixodbc-common (2.3.9-5) ...
103.2 Setting up libodbc2:arm64 (2.3.9-5) ...
103.2 Setting up libodbccr2:arm64 (2.3.9-5) ...
103.2 Setting up libodbcinst2:arm64 (2.3.9-5) ...
103.2 Setting up unixodbc-dev:arm64 (2.3.9-5) ...
103.2 Processing triggers for man-db (2.10.2-1) ...
103.2 Processing triggers for libc-bin (2.35-0ubuntu3.6) ...
103.2   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
103.2                                  Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
100   983  100   983    0     0   2459      0 --:--:-- --:--:-- --:--:--  2463
103.7 OK
103.7   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
103.7                                  Dload  Upload   Total   Spent    Left  Speed
100    89  100    89    0     0    269      0 --:--:-- --:--:-- --:--:--   269
104.1 Hit:1 https://deb.nodesource.com/node_20.x nodistro InRelease
104.1 Hit:2 http://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease
104.1 Hit:3 https://dl.yarnpkg.com/debian stable InRelease
104.3 Hit:4 http://ports.ubuntu.com/ubuntu-ports jammy InRelease
104.4 Hit:5 http://ports.ubuntu.com/ubuntu-ports jammy-updates InRelease
104.4 Get:6 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [3631 B]
104.5 Hit:7 https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy InRelease
104.5 Hit:8 http://ports.ubuntu.com/ubuntu-ports jammy-backports InRelease
104.6 Hit:9 http://ports.ubuntu.com/ubuntu-ports jammy-security InRelease
104.6 Get:10 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages [263 kB]
104.9 Get:11 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [54.2 kB]
104.9 Get:12 https://packages.microsoft.com/ubuntu/20.04/prod focal/main armhf Packages [18.9 kB]
104.9 Get:13 https://packages.microsoft.com/ubuntu/20.04/prod focal/main all Packages [2714 B]
104.9 Fetched 343 kB in 1s (406 kB/s)
104.9 Reading package lists...
105.5 W: https://packages.microsoft.com/ubuntu/20.04/prod/dists/focal/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
105.5 Reading package lists...
106.2 Building dependency tree...
106.3 Reading state information...
106.4 The following additional packages will be installed:
106.4   libodbc1 odbcinst odbcinst1debian2 unixodbc
106.4 Suggested packages:
106.4   msodbcsql17 unixodbc-bin
106.4 The following NEW packages will be installed:
106.4   libodbc1 msodbcsql18 odbcinst odbcinst1debian2 unixodbc
106.7 0 upgraded, 5 newly installed, 0 to remove and 6 not upgraded.
106.7 Need to get 1400 kB of archives.
106.7 After this operation, 1059 kB of additional disk space will be used.
106.7 Get:1 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 libodbc1 arm64 2.3.11-1 [495 kB]
107.1 Get:2 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 odbcinst1debian2 arm64 2.3.11-1 [140 kB]
107.1 Get:3 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 odbcinst arm64 2.3.11-1 [21.8 kB]
107.1 Get:4 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 unixodbc arm64 2.3.11-1 [52.5 kB]
107.1 Get:5 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 msodbcsql18 arm64 18.3.2.1-1 [691 kB]
107.3 debconf: delaying package configuration, since apt-utils is not installed
107.3 Fetched 1400 kB in 1s (1827 kB/s)
107.4 Selecting previously unselected package libodbc1:arm64.
(Reading database ... 30450 files and directories currently installed.)
107.4 Preparing to unpack .../libodbc1_2.3.11-1_arm64.deb ...
107.4 Unpacking libodbc1:arm64 (2.3.11-1) ...
107.4 dpkg: error processing archive /var/cache/apt/archives/libodbc1_2.3.11-1_arm64.deb (--unpack):
107.4  trying to overwrite '/usr/lib/aarch64-linux-gnu/libodbc.so.2.0.0', which is also in package libodbc2:arm64 2.3.9-5
107.4 dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
107.4 Selecting previously unselected package odbcinst1debian2:arm64.
107.4 Preparing to unpack .../odbcinst1debian2_2.3.11-1_arm64.deb ...
107.4 Unpacking odbcinst1debian2:arm64 (2.3.11-1) ...
107.4 dpkg: error processing archive /var/cache/apt/archives/odbcinst1debian2_2.3.11-1_arm64.deb (--unpack):
107.4  trying to overwrite '/usr/lib/aarch64-linux-gnu/libodbcinst.so.2.0.0', which is also in package libodbcinst2:arm64 2.3.9-5
107.4 dpkg-deb: error: paste subprocess was killed by signal (Broken pipe)
107.4 Selecting previously unselected package odbcinst.
107.4 Preparing to unpack .../odbcinst_2.3.11-1_arm64.deb ...
107.4 Unpacking odbcinst (2.3.11-1) ...
107.4 dpkg: error processing archive /var/cache/apt/archives/odbcinst_2.3.11-1_arm64.deb (--unpack):
107.4  trying to overwrite '/etc/odbc.ini', which is also in package unixodbc-common 2.3.9-5
107.4 Selecting previously unselected package unixodbc.
107.4 Preparing to unpack .../unixodbc_2.3.11-1_arm64.deb ...
107.4 Unpacking unixodbc (2.3.11-1) ...
107.4 Selecting previously unselected package msodbcsql18.
107.4 Preparing to unpack .../msodbcsql18_18.3.2.1-1_arm64.deb ...
107.5 Unpacking msodbcsql18 (18.3.2.1-1) ...
107.5 Errors were encountered while processing:
107.5  /var/cache/apt/archives/libodbc1_2.3.11-1_arm64.deb
107.5  /var/cache/apt/archives/odbcinst1debian2_2.3.11-1_arm64.deb
107.5  /var/cache/apt/archives/odbcinst_2.3.11-1_arm64.deb
107.5 E: Sub-process /usr/bin/dpkg returned an error code (1)
------
failed to solve: process "/bin/sh -c apt-get update     && mkdir -p /etc/apt/keyrings     && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch     && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null     && echo \"deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main\" > /etc/apt/sources.list.d/ppa_ondrej_php.list     && apt-get update     && apt-get install -y php8.3-cli php8.3-dev        php8.3-pgsql php8.3-sqlite3 php8.3-gd        php8.3-curl        php8.3-imap php8.3-mysql php8.3-mbstring        php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap        php8.3-intl php8.3-readline        php8.3-ldap        php8.3-msgpack php8.3-igbinary php8.3-redis php8.3-swoole        php8.3-memcached php8.3-pcov php8.3-imagick php8.3-xdebug     && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer     && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg     && echo \"deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main\" > /etc/apt/sources.list.d/nodesource.list     && apt-get update     && apt-get install -y nodejs     && npm install -g npm     && npm install -g pnpm     && npm install -g bun     && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null     && echo \"deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main\" > /etc/apt/sources.list.d/yarn.list     && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null     && echo \"deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main\" > /etc/apt/sources.list.d/pgdg.list     && apt-get update     && apt-get install -y yarn     && apt-get install -y mysql-client     && apt-get install -y postgresql-client-$POSTGRES_VERSION     && apt-get -y autoremove     && apt-get clean     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*     && apt-get update && apt-get install -y --no-install-recommends         apt-transport-https         curl         gnupg         unixodbc-dev     && curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -     && curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list > /etc/apt/sources.list.d/mssql-release.list     && apt-get update     && ACCEPT_EULA=Y apt-get install -y msodbcsql18     && pecl install sqlsrv     && pecl install pdo_sqlsrv     && echo \"extension=sqlsrv.so\" > /etc/php/8.3/mods-available/sqlsrv.ini     && echo \"extension=pdo_sqlsrv.so\" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini     && phpenmod -v 8.3 sqlsrv pdo_sqlsrv     && apt-get clean     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*" did not complete successfully: exit code: 100
5
  • Aside... apt-key add has been deprecated since Debian 9 days (and Ubuntu is based on Debian). Is there some reason to use it for the Microsoft key instead of using gpg --import - or gpg --dearmor like your other key imports? Commented Feb 22, 2024 at 20:54
  • Pretty much, I am quite out of my field in trying to do this stuff. So I really don't know the different ways to add keys, or even that I could add a source to Ubuntu at all. I am sure I am not using the right lingo either. I will try it out using your suggestion. Thanks Commented Feb 22, 2024 at 20:59
  • https://packages.microsoft.com/config/ubuntu/22.04/prod.list already contains deb [arch=amd64,armhf,arm64] https://packages.microsoft.com/ubuntu/22.04/prod jammy main. What purpose does sed 's/amd64/arm64/g' serve except to double up on arm64 architectures? Commented Feb 22, 2024 at 21:00
  • 1
    Reading through the build log... libodbc2:arm64 was already installed and then the wheels start falling off when trying to install libodbc1 later on. unixodbc packages conflict with upstream packages on Ubuntu 22.04 and Debian 11 #39 seems related but I don't have time to investigate this any further this morning. Commented Feb 22, 2024 at 21:09
  • 1
    Split that ginormous install command in pieces. Do the basics first and then add that separate command to add Microsoft SQL drivers. Then just debug that install command or log into the container and do the install command manually first. Focus on that GPG key thing, it might just be outdated documentation, you'll never know Commented Feb 23, 2024 at 2:07

1 Answer 1

0

After a few hours and doing some learning here is a working copy.

Was super helpful to go through and manually add the key and the repo after the image had booted.

Thanks for the help guys!

FROM ubuntu:22.04

LABEL maintainer="Taylor Otwell"

ARG WWWGROUP
ARG NODE_VERSION=20
ARG POSTGRES_VERSION=15

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80"

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update \
    && mkdir -p /etc/apt/keyrings \
    && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 dnsutils librsvg2-bin fswatch \
    && curl -sS 'https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x14aa40ec0831756756d7f66c4f4ea0aae5267a6c' | gpg --dearmor | tee /etc/apt/keyrings/ppa_ondrej_php.gpg > /dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/ppa_ondrej_php.gpg] https://ppa.launchpadcontent.net/ondrej/php/ubuntu jammy main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
    && apt-get update \
    && apt-get install -y php8.3-cli php8.3-dev \
       php8.3-pgsql php8.3-sqlite3 php8.3-gd \
       php8.3-curl \
       php8.3-imap php8.3-mysql php8.3-mbstring \
       php8.3-xml php8.3-zip php8.3-bcmath php8.3-soap \
       php8.3-intl php8.3-readline \
       php8.3-ldap \
       php8.3-msgpack php8.3-igbinary php8.3-redis php8.3-swoole \
       php8.3-memcached php8.3-pcov php8.3-imagick php8.3-xdebug \
    && curl -sLS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer \
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_VERSION.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
    && apt-get update \
    && apt-get install -y nodejs \
    && npm install -g npm \
    && npm install -g pnpm \
    && npm install -g bun \
    && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | tee /etc/apt/keyrings/yarn.gpg >/dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/yarn.gpg] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
    && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | tee /etc/apt/keyrings/pgdg.gpg >/dev/null \
    && echo "deb [signed-by=/etc/apt/keyrings/pgdg.gpg] http://apt.postgresql.org/pub/repos/apt jammy-pgdg main" > /etc/apt/sources.list.d/pgdg.list \
    && apt-get update \
    && apt-get install -y yarn \
    && apt-get install -y mysql-client \
    && apt-get install -y postgresql-client-$POSTGRES_VERSION \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && apt-get update && apt-get install -y --no-install-recommends \
        apt-transport-https \
        curl \
        gnupg

RUN curl https://packages.microsoft.com/keys/microsoft.asc | tee /etc/apt/trusted.gpg.d/microsoft.asc \
    && curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | tee /etc/apt/sources.list.d/mssql-release.list \
    && apt-get update

RUN ACCEPT_EULA=Y apt-get install -y msodbcsql18
RUN apt-get install -y unixodbc-dev

RUN pecl install sqlsrv \
    && pecl install pdo_sqlsrv \
    && echo "extension=sqlsrv.so" > /etc/php/8.3/mods-available/sqlsrv.ini \
    && echo "extension=pdo_sqlsrv.so" > /etc/php/8.3/mods-available/pdo_sqlsrv.ini \
    && phpenmod -v 8.3 sqlsrv pdo_sqlsrv \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.3

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /etc/php/8.3/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 8000

ENTRYPOINT ["start-container"]
Sign up to request clarification or add additional context in comments.

3 Comments

Glad to hear you got it working but I'm surprised that's the final Dockerfile. Since you're starting with Ubuntu 22.04 have you tried referring to the correct Microsoft repo, https://packages.microsoft.com/config/ubuntu/22.04/prod.list? pdo_sqlsrv and sqlsrv are normally source distributions and should need build-essential, cmake and gcc installed somewhere.
I tried using your script and it worked on the build. I ran sail up and I got the error You should set SUPERVISOR_PHP_USER to either 'sail' or 'root'. then exit with code 1. I have almost zero knowledge of this kind of stuff so I don't know where to start resolving this issue. Thoughts? Help?
I am far from knowing much about this either. But I did find this. Sail seems to set its own group permissions on files that it owns. I have had many problems with this as well. My two thoughts are first make sure that you have WWWUSER=1000 WWWGROUP=1000 both set in your .env file. Next would be to make sure that the folder that you are running sail in has the proper permissions. You can check permissions with ls -l Mine is set to this drwxr-xr-x@ 27 myUserName staff 864 Apr 29 11:41 projectBeingRanBySail

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.