Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Conectar php com sql server

Olá, estou tentando criar um ambiente de desenvolvimento usando docker com php e apache, mas não estou conseguindo instalar o driver do pdo sqlserver. pesquisando só encontro tutoriais usando os comandos do linux de RUN apt-get update && apt-get install ...... Porem dessa maneira demora muito para rodar o comando update. Tambem cheguei a testar RUN docker-php-ext-install pdo_mysql e funcionou muito bem para o mysql, mas preciso para o SQL Server, podem me ajudar?

Estou usando docker for windows na imagem de php:7.2-apache

3 respostas

Olá consegui levantar dessa maneira, porem preciso entrar no contêiner e dar um service apache2 restart. Se coloco no ENTRYPOINT o contêiner não fica em execução. Pode me ajudar a solucionar isso e a deixar melhor esse dockerfile?

FROM ubuntu:18.04

RUN apt-get update && apt-get install -y \
    software-properties-common \
    tzdata 

RUN echo "America/Sao_Paulo" | tee /etc/timezone && \
    ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && \
    dpkg-reconfigure -f noninteractive tzdata

RUN add-apt-repository ppa:ondrej/php -y 

RUN apt-get update && apt-get install -y --allow-unauthenticated \
    php7.3 \ 
    php7.3-dev \ 
    php7.3-xml \
    php-pear \
    curl \
    gnupg \
    libapache2-mod-php7.3 \
    apache2

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN apt-get update && ACCEPT_EULA=Y apt-get install -y \
    msodbcsql17 \
    unixodbc-dev \
    && rm -rf /var/lib/apt/lists/*

RUN pecl install sqlsrv \
    && pecl install pdo_sqlsrv

RUN printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.3/mods-available/sqlsrv.ini \
    && printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.3/mods-available/pdo_sqlsrv.ini

RUN phpenmod -v 7.3 sqlsrv pdo_sqlsrv

#RUN apt-get install -y \    libapache2-mod-php7.3 \    apache2 \    && rm -rf /var/lib/apt/lists/*

RUN a2dismod mpm_event \
    && a2enmod mpm_prefork \
    && a2enmod php7.3 

#ENTRYPOINT service apache2 restart
EXPOSE 80

Olá Rafael, tudo bem? Peço desculpas pela demora em ti responder! Bem nesse caso como é só para restartar o apache2, você poderia utilizar o "RUN" novamente, como nesse caso:

RUN service apache2 restart

Ou então, você poderia buscar uma imagem que já tivesse quase tudo pronto, e você só precisaria adicionar o que estiver faltando para montar seu ambiente.

Espero ter ajudado!

solução!

Olá, obrigado pelo retorno. Consegui com o comando:

CMD ["apachectl", "-D", "FOREGROUND"]

Dockerfile completo:

FROM ubuntu:18.04

RUN apt-get update && apt-get install -y \
    software-properties-common \
    tzdata 

RUN echo "America/Sao_Paulo" | tee /etc/timezone && \
    ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime && \
    dpkg-reconfigure -f noninteractive tzdata

RUN add-apt-repository ppa:ondrej/php -y 

RUN apt-get update && apt-get install -y --allow-unauthenticated \
    php7.3 \ 
    php7.3-dev \ 
    php7.3-xml \
    php-pear \
    curl \
    gnupg \
    libapache2-mod-php7.3 \
    apache2

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - \
    && curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list

RUN apt-get update && ACCEPT_EULA=Y apt-get install -y \
    msodbcsql17 \
    unixodbc-dev \
    && rm -rf /var/lib/apt/lists/*

RUN pecl install sqlsrv \
    && pecl install pdo_sqlsrv

RUN printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.3/mods-available/sqlsrv.ini \
    && printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.3/mods-available/pdo_sqlsrv.ini

RUN phpenmod -v 7.3 sqlsrv pdo_sqlsrv

#RUN apt-get install -y \    libapache2-mod-php7.3 \    apache2 \    && rm -rf /var/lib/apt/lists/*

RUN a2dismod mpm_event \
    && a2enmod mpm_prefork \
    && a2enmod php7.3 

CMD ["apachectl", "-D", "FOREGROUND"]
EXPOSE 80