[英]DockerFile in ./docker/8.0 vs DockerFile in ./vendor/laravel/sail/runtimes/8.0
Good day,再会,
I got stumbled to a peculiar issue.我偶然发现了一个奇怪的问题。 I'm a newbie in Laravel Sail with Docker.我是 Docker 的 Laravel Sail 新手。 When I change the laravel service context to point to DockerFile in ./docker/8.0
which I used to add some scripts to install PHP SQL server drivers and ODBC the container wont start instead it gives message /usr/bin/env: 'bash\\r': No such file or directory
;当我将 Laravel 服务上下文更改为指向 ./docker/8.0 中的./docker/8.0
,我曾经添加一些脚本来安装 PHP SQL 服务器驱动程序和 ODBC,容器不会启动,而是会提供消息/usr/bin/env: 'bash\\r': No such file or directory
;
version: '3'
services:
laravel.test:
build:
context: ./docker/8.0
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
container_name: oncampus-webapp
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
The same scripts for PHP SQL server driver and ODBC when I add them to the DockerFile in ./vendor/laravel/sail/runtimes/8.0
and change the context of the laravel service in docker-compose.yml
the container starts successfully.当我将 PHP SQL 服务器驱动程序和 ODBC 的相同脚本添加到 ./vendor/laravel/sail/runtimes/8.0 中的./vendor/laravel/sail/runtimes/8.0
并在 docker docker-compose.yml
更改 laravel 服务的上下文时,容器成功启动。
version: '3'
services:
laravel.test:
build:
context: ./vendor/laravel/sail/runtimes/8.0 # Default context
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
image: sail-8.0/app
container_name: oncampus-webapp
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
Here is my DockerFile which has the additional PHP SQL drivers and ODBC installation instructions这是我的 DockerFile,其中包含额外的 PHP SQL 驱动程序和 ODBC 安装说明
FROM ubuntu:20.04
LABEL maintainer="Taylor Otwell"
ARG WWWGROUP
WORKDIR /var/www/html
ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update \
&& apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 \
&& mkdir -p ~/.gnupg \
&& chmod 600 ~/.gnupg \
&& echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C \
&& apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C300EE8C \
&& echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
&& apt-get update \
&& apt-get install -y php8.0-cli php8.0-dev \
php8.0-pgsql php8.0-sqlite3 php8.0-gd \
php8.0-curl php8.0-memcached \
php8.0-imap php8.0-mysql php8.0-mbstring \
php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
php8.0-intl php8.0-readline \
php8.0-msgpack php8.0-igbinary php8.0-ldap \
php8.0-redis \
&& php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
&& curl -sL https://deb.nodesource.com/setup_16.x | bash - \
&& apt-get install -y nodejs \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& apt-get install -y yarn \
&& apt-get install -y mysql-client \
&& apt-get install -y postgresql-client \
&& apt-get -y autoremove \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN pecl channel-update https://pecl.php.net/channel.xml \
&& pecl install swoole \
&& pecl clear-cache \
&& rm -rf /tmp/* /var/tmp/*
RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0
# Start of PHP SQL Server Driver Entries
# Add repository ODBC and Install the Microsoft ODBC driver for SQL Server
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
# Ubuntu 20.04
&& 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 msodbcsql17 \
# optional: for bcp and sqlcmd
&& ACCEPT_EULA=Y apt-get install -y mssql-tools \
&& apt-get install -y gcc musl-dev make \
# optional: for unixODBC development headers (The Microsoft ODBC driver’s installation page mentions that the development libraries are optional – they are not. So run the command below to avoid errors)
&& apt-get install -y unixodbc-dev
# Install the PHP drivers for Microsoft SQL Server
RUN apt-get update \
&& pecl channel-update pecl.php.net \
#&& pecl channel-update https://pecl.php.net/channel.xml \
#&& pecl install swoole \
&& pecl install sqlsrv pdo_sqlsrv \
&& pecl clear-cache \
&& rm -rf /tmp/* /var/tmp/*
RUN /bin/bash -c 'source ~/.bashrc'
RUN echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
RUN printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.0/mods-available/sqlsrv.ini
RUN printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.0/mods-available/pdo_sqlsrv.ini
RUN phpenmod sqlsrv pdo_sqlsrv
# End of PHP SQL Server Driver Entries
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.0/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container
EXPOSE 8000
ENTRYPOINT ["start-container"]
And the start-container script和启动容器脚本
#!/usr/bin/env bash
if [ ! -z "$WWWUSER" ]; then
usermod -u $WWWUSER sail
fi
if [ ! -d /.composer ]; then
mkdir /.composer
fi
chmod -R ugo+rw /.composer
if [ $# -gt 0 ];then
exec gosu $WWWUSER "$@"
else
/usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
fi
I'm running docker desktop on Microsoft Windows Platform with WSL2 using Ubuntu distro.我正在使用 Ubuntu 发行版在带有 WSL2 的 Microsoft Windows 平台上运行 docker 桌面。
I would appreciate for anyone to assist where am I missing a point between the two files.我很感激任何人帮助我在两个文件之间遗漏了一个点。
Thanks in advance提前致谢
I faced the same issue recently.我最近遇到了同样的问题。 I'm running Sail from Macos, and after running artisan sail:publish and made some tweaks for getting xdebug running as expected, it were working fine so I committed my changes.我正在从 Macos 运行 Sail,在运行 artisan Sailing:publish 并进行了一些调整以使 xdebug 按预期运行后,它运行良好,所以我提交了我的更改。 I switched to another branch and after that, I switched back and suddenly that error start to appear.我切换到另一个分支,在那之后,我切换回来,突然那个错误开始出现。
In my case was related with a Git misconfiguration for line endings formats.就我而言,这与行尾格式的 Git 配置错误有关。 So this is what I did:所以这就是我所做的:
1.- I installed dos2unix command line program for passing those files that I changed to the right format. 1.- 我安装了 dos2unix 命令行程序,用于传递我更改为正确格式的文件。
#Mac OS
$ brew install dos2unix
$ find docker/ -type f -exec dos2unix {} ;
$ dos2unix docker-compose.yml
2.- Remove previous images and containers with docker desktop. 2.- 使用 docker 桌面删除以前的图像和容器。
3.- Run sail up again 3.- 再次扬帆起航
4.- Change my git config ( input for Unix based systems, true for Windows): 4.- 更改我的 git 配置(基于 Unix 的系统的输入,Windows 为true ):
$ git config --global core.autocrlf input
Hope it can help anyone else.希望它可以帮助其他人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.