by Devin Yang
(This article was automatically translated.)

Published - 7 years ago ( Updated - 7 years ago )

foreword

The CCC website has been upgraded to php 7.2.0. With a Docker environment, it is easy to upgrade php.
There are still some precautions you should know about the change of Image on Linux.
If you install D-Laravel on a Linux system through docker like me, when you change a different image,
Perhaps you may encounter, doubt! Why composer does not have permission to write to the folder error.
directory is not writable

illustrate

In the Linux environment, the user of D-Laravel's built-in image is not root, and the default uid and gid are 1000.
It is very likely that it is different from the user uid and gid executed on your Linux, you can enter the id to check.
If the user uid and gid on your Linux are exactly 1000, basically there will be no problem in executing D-Laravel.
id command
But when your situation is the same as mine, uid and gid are not 1000, which will cause your users on Linux to execute composer,
If you do not have permission to write to the home directory of dlaravel, when you enter composer update,
You will see the following error: OK, this is normal, don't be too alarmed.

directory is not writable
The correction method is very simple. To put it bluntly, just change the uid and gid of dlaravel to be the same as the uid and gid of the Linux user you are running.

If you are not familiar with Linux instructions or Docker, or if you are quite familiar with Linux instructions, it is just a lazy adjustment.
The goal of D-Laravel development is to let people who don't understand Docker or who understand Docker can use the simplest way to get the environment,
Of course, D-Laravel has provided converted bash.

D-Laravel's correction method:

We can use the ./console chowner method provided by D-Laravel to easily adjust.
How to identify ./console chowner ? Here I adopted a very rough and direct method, which is to directly cut off the dlaravel users in the container.
Then execute the user id and gid of ./console chowner ,
Create the same dlaravel user in the container, and then change the permissions of the dlaravel home directory.

Crude enough, but it works.
./console chowner
The latest version of D-Laravel no longer uses this brutal method to change the user's uid and gid, and there is a better way.
https://www.ccc.tc/article/dlaravel-release-v1.5.5

When we rebuilt the dlaravel user in the container through ./console chowner ,
We need to write the changes and write data to the image of deivny/fpm used ,
Due to the docker-compose environment, the container will be removed when down is executed.
So we have to save the container changes into the image template,
In this way, the execution container will be the environment we changed when the next startup occurs.

In this example, I am using version 7.2.0 of php, so find out the CONTAINER ID of fpm.
docker ps

Then commit and restart.
commit
After completion, enter the container, and then run to see composer update .

You can see that after changing the permission, it can be updated normally, and composer will no longer complain about not having permission to write to the added directory.
composer update

If you have any questions about the use of D-Laravel, please leave a message in the chat room.

Tags: docker

Devin Yang

Feel free to ask me, if you don't get it.:)

No Comment

Post your comment

Login is required to leave comments

Similar Stories


certbot,docker,ftp

curlftpfs introduction and manual certificate application

Situation sharing, imagine that you have WebHosting, which only provides FTP connection, and then you want to apply for a certificate manually. In this article, I share how I use Docker to install curlftpfs, mount the FTP folder of the remote host, and then execute certbot in the container to apply for an SSL certificate. Leaving aside the certificate application, when I first discovered the curlftpfs command, I found it very interesting, especially if you are a MacOS user and do not have a satisfactory FTP software at hand. You love scrolling through the command line as much as I do, so maybe you should love this command too. 🤭

docker,phpenv

Ran out of Docker IPv4 address pool problem solving

Maybe in the old version of the docker environment, when using Docker compose to start the container, you will encounter the following error: Error response from daemon: could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network This is actually this It is a symptom of running out of default-address-pools. In some environments, docker-compose will use the private network of Class B by default. The private IP of segment 172 has a range, from 172.16.0.0 to 172.31.255.255. That is to say, when we start a docker-compose Project, it will eat a private section of Class B, which is very heroic.

docker

Wenchat about the evolution history of my network

Hear about the evolution of my network. My GCP costs $46.35 per month, and the current free trial balance is $111.05, I've almost spent $300, and I'm about to move back to a self-managed host.