Build PHP 7.3 with Laravel. How can i do it?
thomaslegal10
PROOP

2 years ago

I have an old application. How can i make build in service?

242 Replies

thomaslegal10
PROOP

2 years ago

N/A


thomaslegal10
PROOP

2 years ago

Project ID: N/A


2 years ago

You would need to write a Dockerfile to use unsupported php versions


thomaslegal10
PROOP

2 years ago

Okay. I need a Dockerfile.


thomaslegal10
PROOP

2 years ago

Have a application, but i have questions about how make it.


thomaslegal10
PROOP

2 years ago

Can send me?


2 years ago

@Thomas Mendonça are you brazilian? if so, do you mind upvoting this community suggestion ? Bora trazer o Railway pro Brasil 😉


2 years ago

Also, I'll send you a dockerfile example


2 years ago

Do you use Composer or Artisan?


thomaslegal10
PROOP

2 years ago

Both


thomaslegal10
PROOP

2 years ago

Yeah!! I am Brazilian ❤️


thomaslegal10
PROOP

2 years ago

I need composer run my Laravel project


2 years ago

Ok, one sec


thomaslegal10
PROOP

2 years ago

Okay


2 years ago

This is my dockerfile using php 7.4 and composer

FROM composer:2.4.4 AS composer
FROM php:7.4-fpm as base
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#UPDATE
RUN apt-get update

#INSTALL DEPS
RUN apt-get install -y \
    nginx \
    supervisor \
    zlib1g-dev \
    libzip-dev \
    libjpeg-dev \
    libxml2-dev \
    libonig-dev \
    libicu-dev \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev

#SETUP PHP EXTENSIONS
RUN docker-php-ext-install gd soap zip intl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg

FROM base as config

#COPY NGINX AND SUPERVISOR CONF
COPY default.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

FROM config as app

WORKDIR /var/www/html

COPY . .

RUN composer install --ignore-platform-req=ext-bcmath --no-dev

EXPOSE 8080
CMD ["/usr/bin/supervisord"]

2 years ago

default.conf

server {
  listen       8080;
  server_name  0.0.0.0;
  root         /var/www/html;
  # pass the PHP scripts to FastCGI server
  # listening on 127.0.0.1:9000

  location / {
      try_files $uri /public/index.php?q=$uri&$args;
  }

  # comment vv
  location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    fastcgi_param  SCRIPT_NAME      $fastcgi_script_name;
    include        fastcgi_params;
  }
}

2 years ago

supervisor.conf
```[supervisord]
nodaemon=true

[program:nginx]
command=nginx -g "daemon off;"
autostart=true
autorestart=true
stdoutlogfile=/dev/stdout stdoutlogfilemaxbytes=0 stderrlogfile=/dev/stderr
stderrlogfilemaxbytes=0

[program:php-fpm]
command=php-fpm
autostart=true
autorestart=true
stdoutlogfile=/dev/stdout stdoutlogfilemaxbytes=0 stderrlogfile=/dev/stderr
stderrlogfilemaxbytes=0```


2 years ago

this is also an old project, lol


2 years ago

It just doesn't has artisan


thomaslegal10
PROOP

2 years ago

Okay


thomaslegal10
PROOP

2 years ago

I will try here


thomaslegal10
PROOP

2 years ago

Need I to config something in Railway settings?


2 years ago

you shouldn't have to


thomaslegal10
PROOP

2 years ago

okay


thomaslegal10
PROOP

2 years ago

1230193023971758300


thomaslegal10
PROOP

2 years ago

Error 😢


2 years ago

full build logs please -


thomaslegal10
PROOP

2 years ago


2 years ago

change php:7.4-fpm to php:7.3-fpm


2 years ago

There's some incompatibilities between the two


2 years ago

This new minor version brings with it a number of new features and a few incompatibilities that should be tested for before switching PHP versions in production environments.


thomaslegal10
PROOP

2 years ago

Okay, one sec


thomaslegal10
PROOP

2 years ago

error

1230196689164308500


2 years ago

build logs again please


thomaslegal10
PROOP

2 years ago


thomaslegal10
PROOP

2 years ago

There is, my bro


2 years ago

im not the php guy, you will have to wait for a response from medim, please be patient as this is community support


2 years ago

replace it to php:7.3-fpm-alpine


2 years ago

i'm wondering if docker-ext exists in php:7.3-fpm by default 🤔


2 years ago

im sure the alpine one does tho


thomaslegal10
PROOP

2 years ago

okay, one sec


thomaslegal10
PROOP

2 years ago

haha no problem, I will wait.


thomaslegal10
PROOP

2 years ago

thanks for you help


thomaslegal10
PROOP

2 years ago

1230199842655965400


thomaslegal10
PROOP

2 years ago

hehe fail again


thomaslegal10
PROOP

2 years ago

:"(


2 years ago

going forward, please only send the logs you get from the bookmarklet, the screenshots are not very helpful


2 years ago

alpine doesn't has apt-get lmao


2 years ago

wait a sec


thomaslegal10
PROOP

2 years ago

Ow, okay.


2 years ago

one sec, i'm redoing the dockerfile to be alpine based


2 years ago

FROM composer:2.4.4 AS composer
FROM php:7.3-fpm-alpine as base
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#INSTALL DEPS
RUN apk update && \
    apk add --no-cache \
    nginx \
    supervisor \
    zlib-dev \
    libzip-dev \
    libjpeg-turbo-dev \
    libpng-dev \
    freetype-dev \
    libxml2-dev \
    oniguruma-dev \
    icu-dev

#SETUP PHP EXTENSIONS
RUN docker-php-ext-install gd soap zip intl
RUN docker-php-ext-configure gd --with-freetype --with-jpeg

FROM base as config

#COPY NGINX AND SUPERVISOR CONF
COPY default.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

FROM config as app

WORKDIR /var/www/html

COPY . .

RUN composer install --ignore-platform-req=ext-bcmath --no-dev

EXPOSE 8080
CMD ["/usr/bin/supervisord"]

2 years ago

let's see the next error lmao


2 years ago

(it prob won't gonna find one of those packages since i migrated debian to alpine-linux)


thomaslegal10
PROOP

2 years ago

ok


thomaslegal10
PROOP

2 years ago

one minute


thomaslegal10
PROOP

2 years ago

1230203860761575400


thomaslegal10
PROOP

2 years ago


2 years ago

💀


2 years ago

what is weird is that it runs the docker-php-ext in line 21 but no the one that configures gd


2 years ago

you can try removing that line entirely if your app doesn't rely on gd


2 years ago

or try changing it to RUN docker-php-ext-configure gd \ --with-freetype \ --with-png \ --with-jpeg


thomaslegal10
PROOP

2 years ago

okay


thomaslegal10
PROOP

2 years ago

what's gd?


2 years ago

Image manipulation


thomaslegal10
PROOP

2 years ago

Ah okay


thomaslegal10
PROOP

2 years ago

one sec


thomaslegal10
PROOP

2 years ago

1230206530947776500


2 years ago

whitespaces?


2 years ago

^


2 years ago

tbh just remove that entire line


2 years ago

if its needed we'll find a way to add it


2 years ago

lets get that app up first


thomaslegal10
PROOP

2 years ago

Okay


2 years ago

FROM composer:2.4.4 AS composer
FROM php:7.3-fpm-alpine as base
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#INSTALL DEPS
RUN apk update && \
    apk add --no-cache \
    nginx \
    supervisor \
    zlib-dev \
    libzip-dev \
    libjpeg-turbo-dev \
    libpng-dev \
    freetype-dev \
    libxml2-dev \
    oniguruma-dev \
    icu-dev

#SETUP PHP EXTENSIONS
RUN docker-php-ext-install soap zip intl

FROM base as config

#COPY NGINX AND SUPERVISOR CONF
COPY default.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

FROM config as app

WORKDIR /var/www/html

COPY . .

RUN composer install --ignore-platform-req=ext-bcmath --no-dev

EXPOSE 8080
CMD ["/usr/bin/supervisord"]

thomaslegal10
PROOP

2 years ago


2 years ago

almost there, lol


thomaslegal10
PROOP

2 years ago

hehe


thomaslegal10
PROOP

2 years ago

yeah


thomaslegal10
PROOP

2 years ago

more one


2 years ago

FROM composer:2.4.4 AS composer
FROM php:7.3-fpm-alpine as base
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#INSTALL DEPS
RUN apk update && \
    apk add --no-cache \
    nginx \
    supervisor \
    zlib-dev \
    libzip-dev \
    libjpeg-turbo-dev \
    libpng-dev \
    freetype-dev \
    libxml2-dev \
    oniguruma-dev \
    icu-dev \
    git

#SETUP PHP EXTENSIONS
RUN docker-php-ext-install soap zip intl

FROM base as config

#COPY NGINX AND SUPERVISOR CONF
COPY default.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

FROM config as app

WORKDIR /var/www/html

COPY . .

RUN composer install --ignore-platform-req=ext-bcmath --no-dev

EXPOSE 8080
CMD ["/usr/bin/supervisord"]

2 years ago

it installs from source, we need git


thomaslegal10
PROOP

2 years ago

RUN apk update && apk add --no-cache again?


thomaslegal10
PROOP

2 years ago

twice?


thomaslegal10
PROOP

2 years ago

Install Git

RUN apk update && apk add --no-cache

INSTALL DEPS

RUN apk update && \
apk add --no-cache \
nginx \


2 years ago

edited it, forgot to remove that line


thomaslegal10
PROOP

2 years ago

ah


thomaslegal10
PROOP

2 years ago

okay


2 years ago

also, do you got the default.conf and supervisord.conf at the same dir level as your dockerfile?


thomaslegal10
PROOP

2 years ago

yes, i do


thomaslegal10
PROOP

2 years ago

building…


thomaslegal10
PROOP

2 years ago


2 years ago

yeah it needs gd


2 years ago

lmao


thomaslegal10
PROOP

2 years ago

Oh God


thomaslegal10
PROOP

2 years ago

And now?


2 years ago

FROM composer:2.4.4 AS composer
FROM php:7.3-fpm-alpine as base
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"

#INSTALL DEPS
RUN apk update && \
    apk add --no-cache \
    nginx \
    supervisor \
    zlib-dev \
    libzip-dev \
    libjpeg-turbo-dev \
    libpng-dev \
    freetype-dev \
    libxml2-dev \
    oniguruma-dev \
    icu-dev \
    git

#SETUP PHP EXTENSIONS
RUN docker-php-ext-install gd soap zip intl
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/

FROM base as config

#COPY NGINX AND SUPERVISOR CONF
COPY default.conf /etc/nginx/conf.d/default.conf
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf

FROM config as app

WORKDIR /var/www/html

COPY . .

RUN composer install --ignore-platform-req=ext-bcmath --no-dev

EXPOSE 8080
CMD ["/usr/bin/supervisord"]

2 years ago

re added GD with some php 7.2 args


2 years ago

this help thread made my remember my hate for php in prod


2 years ago

also, good thing railway doesn't charge build time


thomaslegal10
PROOP

2 years ago

Yeah hehe


thomaslegal10
PROOP

2 years ago

So good


thomaslegal10
PROOP

2 years ago


thomaslegal10
PROOP

2 years ago

error


2 years ago

you are using a github repo as package in composer


2 years ago

1230214536519225300


2 years ago

hmm..


thomaslegal10
PROOP

2 years ago

okay


thomaslegal10
PROOP

2 years ago

i will remove


thomaslegal10
PROOP

2 years ago

one minute


2 years ago

is it needed?


2 years ago

seems like its a private repo


2 years ago

and its a hassle since you would need to generate SSH keys just to clone them with composer but its a bad idea to upload your SSH keys to your repo so you would need repo secrets… so lets avoid all that


thomaslegal10
PROOP

2 years ago

i will remove, it is trash


2 years ago

..did it build?


thomaslegal10
PROOP

2 years ago

build complete


thomaslegal10
PROOP

2 years ago

but don't show the default page


2 years ago

prob some nginx config


thomaslegal10
PROOP

2 years ago

I how put "/public"?


thomaslegal10
PROOP

2 years ago

to publish


2 years ago

@Brody I set a 8080 port in my server.listen so I guess he would need to add a PORT=8080 env var?


2 years ago

.


2 years ago

@Thomas Mendonça create a PORT=8080 env var


thomaslegal10
PROOP

2 years ago

Oooh


thomaslegal10
PROOP

2 years ago

this is the problem


thomaslegal10
PROOP

2 years ago

!!


2 years ago

we may need to mess a bit with the default.conf now, since I use that specific config to fastcgi


thomaslegal10
PROOP

2 years ago

one minute


thomaslegal10
PROOP

2 years ago

i will set port


thomaslegal10
PROOP

2 years ago

ah fail


thomaslegal10
PROOP

2 years ago

1230220183398908000


thomaslegal10
PROOP

2 years ago


2 years ago

no errors


2 years ago

just wait


2 years ago

try refreshing it


thomaslegal10
PROOP

2 years ago

i do it


2 years ago

<:thonking:573392943260631050>


2 years ago

can you send the url here?


2 years ago

Thomas, where did you set the env var


2 years ago

(I also think there's some issues with the default.conf)



2 years ago

would you mind answering this question


thomaslegal10
PROOP

2 years ago

APPENV=local APPDEBUG=true
APPKEY= DBHOST=
DBDATABASE= DBUSERNAME=
DB_PASSWORD=
PORT=8080


2 years ago

can you please answer the question


2 years ago

Did u set it in the Railway Env tab or locally?


thomaslegal10
PROOP

2 years ago

in the railway system variables


2 years ago

1230222007052927200


thomaslegal10
PROOP

2 years ago

Railway env tab


thomaslegal10
PROOP

2 years ago

Railway env tab


2 years ago

@Brody would it be too hard to migrate from nginx to caddy?


2 years ago

if you where familiar with the technologies involved, no


2 years ago

try this default.conf

server {
    listen 8080;
    server_name 0.0.0.0;
    root /var/www/html/public; # Adjust the root directory to point to the public directory of your Laravel app

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

2 years ago

laravel serves in the /public folder


2 years ago

saw you mentioning it, I forgot about that


thomaslegal10
PROOP

2 years ago

Okay


thomaslegal10
PROOP

2 years ago

Building…


thomaslegal10
PROOP

2 years ago

One minute


thomaslegal10
PROOP

2 years ago

nothing yet


thomaslegal10
PROOP

2 years ago

"fastcgi_pass 127.0.0.1:9000;"


thomaslegal10
PROOP

2 years ago

Is it right?


2 years ago

Anything in the logs?


thomaslegal10
PROOP

2 years ago


2 years ago

yes.


2 years ago

I'm out of ideas <:PepeCRY:1214283858267348992>
we got it to build and deploy but I suck at nginx


thomaslegal10
PROOP

2 years ago

Ahh :/


thomaslegal10
PROOP

2 years ago

So close



2 years ago

we can try the default conf from laravel docs


2 years ago

```server {
listen 8080;
listen [::]:8080;
server_name 0.0.0.0;
root /var/www/html/public;

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";

index index.php;

charset utf-8;

location / {
    try_files $uri $uri/ /index.php?$query_string;
}

location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt  { access_log off; log_not_found off; }

error_page 404 /index.php;

location ~ \.php$ {
    fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
    include fastcgi_params;
}

location ~ /\.(?!well-known).* {
    deny all;
}

}```


thomaslegal10
PROOP

2 years ago

okay


thomaslegal10
PROOP

2 years ago

One minute


thomaslegal10
PROOP

2 years ago


2 years ago

That's normal, just supervisord starting things up


thomaslegal10
PROOP

2 years ago

Yeah


thomaslegal10
PROOP

2 years ago

But same page


thomaslegal10
PROOP

2 years ago

Application failed to respond



2 years ago

<:sadcat:786868978382536704>


thomaslegal10
PROOP

2 years ago

ô sufoco


thomaslegal10
PROOP

2 years ago

very difficult


thomaslegal10
PROOP

2 years ago


thomaslegal10
PROOP

2 years ago

I was set this default.conf


thomaslegal10
PROOP

2 years ago

Now is play life

1230246986930983000


thomaslegal10
PROOP

2 years ago

Now is the problem


2 years ago

English only please


thomaslegal10
PROOP

2 years ago

Sorry


thomaslegal10
PROOP

2 years ago

Someone help me?


2 years ago

U are now listening to port 80


2 years ago

So that env var u set at railway should also be 80 but if it works I guess u alrady did that


2 years ago

But seems like file serving is still a bit off since it says 404


2 years ago

Is it an API? you can try doing a request to it


thomaslegal10
PROOP

2 years ago

Yeah, railway service on port 80


thomaslegal10
PROOP

2 years ago

env


thomaslegal10
PROOP

2 years ago

Web but not API


thomaslegal10
PROOP

2 years ago

I managed to find an error on port 9000, already in use. With this information, can you help me with any solution tips?


2 years ago

Its already in use by the fastcgi


2 years ago

oh nvm, u changed it to 80


2 years ago

fastcgi port can't be the same as your listen port afaik, so put like listen on 80 and fastcgi port on a number > 1000


2 years ago

and what did u do to hit that error?


2 years ago

maybe that was the error this entire time, try changing it to like 8080, also you cannot use fastcgi as a unix socket, last time I used it like this on railway it wouldn't work pecause of specific perms.
it needs to be on a port


2 years ago

@Thomas Mendonça


2 years ago

send ur default.conf here for me to edit it


thomaslegal10
PROOP

2 years ago


2 years ago

just change the listen to listen 80;


2 years ago

(also change the env var in railway to 80)


thomaslegal10
PROOP

2 years ago

i'm trying run local


thomaslegal10
PROOP

2 years ago

not success


thomaslegal10
PROOP

2 years ago

can you analize, please?


2 years ago

that default conf won't work locally


2 years ago

that's railway specific



thomaslegal10
PROOP

2 years ago

the same problem, if run docker local, run in railway


2 years ago

to run locally:
change server_name to localhost
to run on railway:
change server_name to 0.0.0.0


thomaslegal10
PROOP

2 years ago

Aah okay


thomaslegal10
PROOP

2 years ago

But the nginx, the same is error?


2 years ago

404?


thomaslegal10
PROOP

2 years ago

yeah


thomaslegal10
PROOP

2 years ago

not found the app


2 years ago

yeah, I don't know what to do anymore lmao


thomaslegal10
PROOP

2 years ago

okay


thomaslegal10
PROOP

2 years ago

one minute


thomaslegal10
PROOP

2 years ago

i will try


definewater
HOBBY

2 years ago

Hey idk if this will help at allll BUT i also use laravel on railway and these are my build cmds

composer install && php artisan optimize:clear && php artisan migrate --force && php artisan storage:link

definewater
HOBBY

2 years ago

its under Custom Build Command


definewater
HOBBY

2 years ago

and just put this in


definewater
HOBBY

2 years ago

i dont use any form of changes than those cmds, no custom railway conf or anything


thomaslegal10
PROOP

2 years ago

Okay


thomaslegal10
PROOP

2 years ago

What's PHP version?


thomaslegal10
PROOP

2 years ago

@Faith


definewater
HOBBY

2 years ago

its 8.2, it auto does it


definewater
HOBBY

2 years ago

im using nixpacks


thomaslegal10
PROOP

2 years ago

Good


thomaslegal10
PROOP

2 years ago

Mine 7.3


thomaslegal10
PROOP

2 years ago

😢


thomaslegal10
PROOP

2 years ago

Knows someone how run PHP 7.3?


definewater
HOBBY

2 years ago

a guy further up gave a composer with 7.3 try his


thomaslegal10
PROOP

2 years ago

im try all


thomaslegal10
PROOP

2 years ago

nothing that solved


thomaslegal10
PROOP

2 years ago

Guys, I come to you to let you know that it worked!

It was difficult, but I managed to solve it. If you want, I'll put the 3 files here.

I am very grateful to those who helped me and spent time working with me to resolve it. A special hug to @Medim , who was great!


2 years ago

Share them here @Thomas Mendonça


2 years ago

So I can see what I missed



Loading...