Dockerfile – 永夜 https://www.shuijingwanwq.com 没有不值得去解决的问题,也没有不值得去学习的技术! Sun, 31 May 2026 03:54:00 +0000 zh-Hans hourly 1 https://wordpress.org/?v=7.0 执行命令:docker exec -t object-fpm composer install -vvv,报错:[RuntimeException] git was not found in your PATH, skipping source download https://www.shuijingwanwq.com/2022/01/11/5695/ https://www.shuijingwanwq.com/2022/01/11/5695/#respond Tue, 11 Jan 2022 01:09:27 +0000 https://www.shuijingwanwq.com/?p=5695 Post Views: 160

1、执行命令:docker exec -t object-fpm composer install -vvv,报错:[RuntimeException] git was not found in your PATH, skipping source download。如图1

执行命令:docker exec -t object-fpm composer install -vvv,报错:[RuntimeException]  git was not found in your PATH, skipping source download。

图1


Executing command (CWD): rm -rf '/object/vendor/ua-parser/uap-php'


  [RuntimeException]
  git was not found in your PATH, skipping source download


Exception trace:
 () at phar:///usr/local/bin/composer/src/Composer/Downloader/GitDownloader.php:75
 Composer\Downloader\GitDownloader->doDownload() at phar:///usr/local/bin/composer/src/Composer/Downloader/VcsDownloader.php:73
 Composer\Downloader\VcsDownloader->download() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:224
 Composer\Downloader\DownloadManager->Composer\Downloader\{closure}() at phar:///usr/local/bin/composer/src/Composer/Downloader/DownloadManager.php:217
 Composer\Downloader\DownloadManager->Composer\Downloader\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/RejectedPromise.php:25
 React\Promise\RejectedPromise->then() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:74
 React\Promise\Deferred->React\Promise\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:166
 React\Promise\Deferred->processQueue() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:95
 React\Promise\Deferred->resolve() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:104
 React\Promise\Deferred->reject() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/RejectedPromise.php:25
 React\Promise\RejectedPromise->then() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:76
 React\Promise\Deferred->React\Promise\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:166
 React\Promise\Deferred->processQueue() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:95
 React\Promise\Deferred->resolve() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:104
 React\Promise\Deferred->reject() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/RejectedPromise.php:25
 React\Promise\RejectedPromise->then() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:76
 React\Promise\Deferred->React\Promise\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:166
 React\Promise\Deferred->processQueue() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:95
 React\Promise\Deferred->resolve() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:104
 React\Promise\Deferred->reject() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/RejectedPromise.php:25
 React\Promise\RejectedPromise->then() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:76
 React\Promise\Deferred->React\Promise\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:166
 React\Promise\Deferred->processQueue() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:95
 React\Promise\Deferred->resolve() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Deferred.php:104
 React\Promise\Deferred->reject() at phar:///usr/local/bin/composer/vendor/react/promise/src/React/Promise/Promise.php:45
 React\Promise\Promise->React\Promise\{closure}() at n/a:n/a
 call_user_func() at phar:///usr/local/bin/composer/src/Composer/Util/Http/CurlDownloader.php:526
 Composer\Util\Http\CurlDownloader->rejectJob() at phar:///usr/local/bin/composer/src/Composer/Util/Http/CurlDownloader.php:380
 Composer\Util\Http\CurlDownloader->tick() at phar:///usr/local/bin/composer/src/Composer/Util/HttpDownloader.php:375
 Composer\Util\HttpDownloader->countActiveJobs() at phar:///usr/local/bin/composer/src/Composer/Util/Loop.php:93
 Composer\Util\Loop->wait() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:457
 Composer\Installer\InstallationManager->waitOnPromises() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:340
 Composer\Installer\InstallationManager->downloadAndExecuteBatch() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:267
 Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:707
 Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:249
 Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/InstallCommand.php:136
 Composer\Command\InstallCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:245
 Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:835
 Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:185
 Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:310
 Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:117
 Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:122
 Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:63
 require() at /usr/local/bin/composer:24

install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-suggest] [--no-dev] [--no-autoloader] [--no-scripts] [--no-progress] [--no-install] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--] []...

wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xgrit/object$


2、由于使用 alpine 基础镜像。编辑 Dockerfile ,添加:apk add –no-cache git 。如图2

由于使用 alpine 基础镜像。编辑 Dockerfile ,添加:apk add --no-cache git 。

图2

3、构建容器后,执行命令:docker exec -t object-fpm composer install -vvv,再次报错:error: cannot run ssh: No such file or directory。但是,Git 相关的报错已经得到解决。如图3

构建容器后,执行命令:docker exec -t object-fpm composer install -vvv,再次报错:error: cannot run ssh: No such file or directory。但是,Git 相关的报错已经得到解决。

图3


Executing command (CWD): rm -rf '/object/vendor/ua-parser/uap-php'


  [RuntimeException]
  Failed to execute git clone --mirror -- 'git@git.xxx.com:xgrit/nova.git' '/root/.composer/cache/vcs/git-git.xxx.com-xgrit-nova.git/'

  Cloning into bare repository '/root/.composer/cache/vcs/git-git.xxx.com-xgrit-nova.git'...
  error: cannot run ssh: No such file or directory
  fatal: unable to fork


Exception trace:


]]>
https://www.shuijingwanwq.com/2022/01/11/5695/feed/ 0
执行命令:docker-compose -f docker-compose.yml up –build –force-recreate 时,报错:ERROR [startup_object-fpm internal] load metadata for docker.io/library/php:7.4-fpm-alpine https://www.shuijingwanwq.com/2022/01/05/5677/ https://www.shuijingwanwq.com/2022/01/05/5677/#respond Wed, 05 Jan 2022 01:21:46 +0000 https://www.shuijingwanwq.com/?p=5677 Post Views: 163 1、执行命令:docker-compose -f docker-compose.yml up –build –force-recreate 时,报错:ERROR [startup_object-fpm internal] load metadata for docker.io/library/php:7.4-fpm-alpine 。


wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xxx/object/startup$ docker-compose -f docker-compose.yml up --build --force-recreate
[+] Building 1.7s (4/6)
 => [startup_object-fpm internal] load build definition from Dockerfile                                                                                                                                      0.1s
[+] Building 1.8s (6/6) FINISHED
 => [startup_object-fpm internal] load build definition from Dockerfile                                                                                                                                      0.1s
 => => transferring dockerfile: 32B                                                                                                                                                                         0.0s
 => [startup_object-nginx internal] load build definition from Dockerfile                                                                                                                                    0.1s
 => => transferring dockerfile: 32B                                                                                                                                                                         0.0s
 => [startup_object-fpm internal] load .dockerignore                                                                                                                                                         0.0s
 => => transferring context: 2B                                                                                                                                                                             0.0s
 => [startup_object-nginx internal] load .dockerignore                                                                                                                                                       0.0s
 => => transferring context: 2B                                                                                                                                                                             0.0s
 => ERROR [startup_object-fpm internal] load metadata for docker.io/library/php:7.4-fpm-alpine                                                                                                               1.6s
 => ERROR [startup_object-nginx internal] load metadata for docker.io/library/nginx:1.20.0-alpine                                                                                                            1.5s
------
 > [startup_object-fpm internal] load metadata for docker.io/library/php:7.4-fpm-alpine:
------
------
 > [startup_object-nginx internal] load metadata for docker.io/library/nginx:1.20.0-alpine:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exit status 1, out: ``
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xxx/object/startup$


2、拉取最新代码后,再次执行命令,报错:Error response from daemon: error while creating mount source path。如图1
拉取最新代码后,再次执行命令,报错:Error response from daemon: error while creating mount source path。

图1



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xxx/object/startup$ make start
docker-compose -f docker-compose.yml up --remove-orphans
[+] Building 8.8s (16/16) FINISHED
 => [internal] load build definition from Dockerfile                                                               0.1s
 => => transferring dockerfile: 32B                                                                                0.0s
 => [internal] load .dockerignore                                                                                  0.0s
 => => transferring context: 2B                                                                                    0.0s
 => [internal] load metadata for docker.io/library/nginx:1.20.0-alpine                                             3.8s
 => [internal] load metadata for harbor-core.lfsz.xxx.top/object/admin:feat-s3-test                          2.6s
 => [auth] object/admin:pull token for harbor-core.lfsz.xxx.top                                              0.0s
 => [auth] library/nginx:pull token for registry-1.docker.io                                                       0.0s
 => [stage-0 1/1] FROM harbor-core.lfsz.xxx.top/object/admin:feat-s3-test@sha256:6624e9a4cd3dd1758ef6e59493  3.8s
 => => resolve harbor-core.lfsz.xxx.top/object/admin:feat-s3-test@sha256:6624e9a4cd3dd1758ef6e594930ae6a54b  0.0s
 => => sha256:6624e9a4cd3dd1758ef6e594930ae6a54b7ce4c886f12dee5e473d586e09a852 740B / 740B                         0.0s
 => => sha256:f534cb483d935a219c947c60e295030ecb8b3b6d4b5aa14658582bf0d5b73806 2.50kB / 2.50kB                     0.0s
 => => sha256:fe77c74bfa30e9cbdc3db2ae59630a1168b2ca92fc3773abd8497c008516de54 18.78MB / 18.78MB                   2.9s
 => => extracting sha256:fe77c74bfa30e9cbdc3db2ae59630a1168b2ca92fc3773abd8497c008516de54                          0.7s
 => [stage-1 1/7] FROM docker.io/library/nginx:1.20.0-alpine@sha256:e015192ec74937149dce3aa1feb8af016b7cce3a28962  0.0s
 => [internal] load build context                                                                                  0.1s
 => => transferring context: 1.68kB                                                                                0.0s
 => CACHED [stage-1 2/7] RUN rm -rf /etc/nginx/sites-enabled/* /etc/nginx/conf.d/*                                 0.0s
 => [stage-1 3/7] COPY ./config/default.conf.template /etc/nginx/conf.d/                                           0.0s
 => [stage-1 4/7] ADD ./run.sh /run.sh                                                                             0.0s
 => [stage-1 5/7] RUN chmod +x /run.sh                                                                             0.5s
 => [stage-1 6/7] WORKDIR /object                                                                                   0.1s
 => [stage-1 7/7] COPY --from=0 /var/www/admin /admin                                                              0.3s
 => exporting to image                                                                                             0.3s
 => => exporting layers                                                                                            0.3s
 => => writing image sha256:c22dc85ff549be566fd32274349f0b4fb2bf90ce7e73fb161631330010190fe7                       0.0s
 => => naming to docker.io/library/startup_object-ingress                                                           0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them
[+] Running 8/8
 ⠿ Container object-admin      Removed                                                                              0.1s
 ⠿ Container object-nginx      Removed                                                                              0.1s
 ⠿ Container object-wordpress  Recreated                                                                            0.5s
 ⠿ Container object-mailhog    Created                                                                              0.0s
 ⠿ Container object-redis      Created                                                                              0.0s
 ⠿ Container object-mysql      Created                                                                              0.0s
 ⠿ Container object-fpm        Recreated                                                                            0.3s
 ⠿ Container object-ingress    Created                                                                              0.1s
Attaching to object-fpm, object-ingress, object-mailhog, object-mysql, object-redis, object-wordpress
object-mysql      | 2021-12-28 01:42:21+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
object-mysql      | 2021-12-28 01:42:21+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
object-mysql      | 2021-12-28 01:42:21+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.36-1debian10 started.
object-mysql      | 2021-12-28T01:42:22.153336Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
object-mysql      | 2021-12-28T01:42:22.153389Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
object-mysql      | 2021-12-28T01:42:22.156080Z 0 [Note] mysqld (mysqld 5.7.36) starting as process 1 ...
object-mysql      | 2021-12-28T01:42:22.159754Z 0 [Note] InnoDB: PUNCH HOLE support available
object-mysql      | 2021-12-28T01:42:22.159808Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
object-mysql      | 2021-12-28T01:42:22.159814Z 0 [Note] InnoDB: Uses event mutexes
object-mysql      | 2021-12-28T01:42:22.159819Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
object-mysql      | 2021-12-28T01:42:22.159823Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
object-mysql      | 2021-12-28T01:42:22.159827Z 0 [Note] InnoDB: Using Linux native AIO
object-mysql      | 2021-12-28T01:42:22.163104Z 0 [Note] InnoDB: Number of pools: 1
object-mysql      | 2021-12-28T01:42:22.163285Z 0 [Note] InnoDB: Using CPU crc32 instructions
object-mysql      | 2021-12-28T01:42:22.165635Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
object-mysql      | 2021-12-28T01:42:22.179449Z 0 [Note] InnoDB: Completed initialization of buffer pool
object-mysql      | 2021-12-28T01:42:22.182000Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
object-mysql      | 2021-12-28T01:42:22.194605Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
object-mysql      | 2021-12-28T01:42:22.204077Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
object-mysql      | 2021-12-28T01:42:22.204168Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
object-mysql      | 2021-12-28T01:42:22.327333Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
object-mysql      | 2021-12-28T01:42:22.331317Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
object-mysql      | 2021-12-28T01:42:22.331418Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
object-mysql      | 2021-12-28T01:42:22.336559Z 0 [Note] InnoDB: 5.7.36 started; log sequence number 12659763
object-mysql      | 2021-12-28T01:42:22.336848Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
object-mysql      | 2021-12-28T01:42:22.337114Z 0 [Note] Plugin 'FEDERATED' is disabled.
object-mysql      | 2021-12-28T01:42:22.338690Z 0 [Note] InnoDB: Buffer pool(s) load completed at 211228  1:42:22
object-mysql      | 2021-12-28T01:42:22.346819Z 0 [Note] Found ca.pem, server-cert.pem and server-key.pem in data directory. Trying to enable SSL support using them.
object-mysql      | 2021-12-28T01:42:22.346868Z 0 [Note] Skipping generation of SSL certificates as certificate files are present in data directory.
object-mysql      | 2021-12-28T01:42:22.346874Z 0 [Warning] A deprecated TLS version TLSv1 is enabled. Please use TLSv1.2 or higher.
object-mysql      | 2021-12-28T01:42:22.346876Z 0 [Warning] A deprecated TLS version TLSv1.1 is enabled. Please use TLSv1.2 or higher.
object-mysql      | 2021-12-28T01:42:22.347765Z 0 [Warning] CA certificate ca.pem is self signed.
object-mysql      | 2021-12-28T01:42:22.347836Z 0 [Note] Skipping generation of RSA key pair as key files are present in data directory.
object-mysql      | 2021-12-28T01:42:22.350288Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
object-mysql      | 2021-12-28T01:42:22.350773Z 0 [Note] IPv6 is available.
object-mysql      | 2021-12-28T01:42:22.350825Z 0 [Note]   - '::' resolves to '::';
object-mysql      | 2021-12-28T01:42:22.351070Z 0 [Note] Server socket created on IP: '::'.
object-mysql      | 2021-12-28T01:42:22.367800Z 0 [Warning] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.
object-mysql      | 2021-12-28T01:42:22.378217Z 0 [Note] Event Scheduler: Loaded 0 events
object-mysql      | 2021-12-28T01:42:22.378599Z 0 [Note] mysqld: ready for connections.
object-mysql      | Version: '5.7.36'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
object-mailhog    | 2021/12/28 01:42:22 Using in-memory storage
object-mailhog    | 2021/12/28 01:42:22 [SMTP] Binding to address: 0.0.0.0:1025
object-mailhog    | 2021/12/28 01:42:22 Serving under http://0.0.0.0:8025/
object-mailhog    | [HTTP] Binding to address: 0.0.0.0:8025
object-mailhog    | Creating API v1 with WebPath:
object-mailhog    | Creating API v2 with WebPath:
object-redis      | 1:C 28 Dec 2021 01:42:22.439 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
object-redis      | 1:C 28 Dec 2021 01:42:22.439 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=1, just started
object-redis      | 1:C 28 Dec 2021 01:42:22.439 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
object-redis      | 1:M 28 Dec 2021 01:42:22.440 * monotonic clock: POSIX clock_gettime
object-redis      | 1:M 28 Dec 2021 01:42:22.444 * Running mode=standalone, port=6379.
object-redis      | 1:M 28 Dec 2021 01:42:22.444 # Server initialized
object-redis      | 1:M 28 Dec 2021 01:42:22.444 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
object-redis      | 1:M 28 Dec 2021 01:42:22.452 * Loading RDB produced by version 6.2.6
object-redis      | 1:M 28 Dec 2021 01:42:22.452 * RDB age 1234 seconds
object-redis      | 1:M 28 Dec 2021 01:42:22.452 * RDB memory usage when created 0.77 Mb
object-redis      | 1:M 28 Dec 2021 01:42:22.452 # Done loading RDB, keys loaded: 0, keys expired: 0.
object-redis      | 1:M 28 Dec 2021 01:42:22.452 * DB loaded from disk: 0.000 seconds
object-redis      | 1:M 28 Dec 2021 01:42:22.452 * Ready to accept connections
Error response from daemon: error while creating mount source path '/run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/cb1d4e166be8da67c985eaa6640200414da5e260a1037331857b1232a2d526dc': mkdir /run/desktop/mnt/host/wsl/docker-desktop-bind-mounts/Ubuntu-20.04/cb1d4e166be8da67c985eaa6640200414da5e260a1037331857b1232a2d526dc: file exists
make: *** [Makefile:5: start] Error 1
wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xxx/object/startup$


3、决定在 Docker 中,删除最近 2 天的 Volumes。删除时,报错:Cannot remove volume larabbs_sailmeilisearch. Reason: Error invoking remote method ‘docker-remove-volume’: Error: (HTTP code 409) conflict – remove larabbs_sailmeilisearch: volume is in use – [bf9fa52704306685e964ffc6e0ffc96661aef831419034518c7ad38c4501625c] 。前提是需要提前删除相应的容器。如图2
决定在 Docker 中,删除最近 2 天的 Volumes。删除时,报错:Cannot remove volume larabbs_sailmeilisearch. Reason: Error invoking remote method 'docker-remove-volume': Error: (HTTP code 409) conflict - remove larabbs_sailmeilisearch: volume is in use - [bf9fa52704306685e964ffc6e0ffc96661aef831419034518c7ad38c4501625c] 。前提是需要提前删除相应的容器。

图2

4、仍然报错,即使关闭 Docker Desktop,再打开 Docker Desktop。仍然报同样的错误,最后重启电脑,得以解决。不过又继续报错: /docker-entrypoint.sh: exec: line 38: /run.sh: not found object-ingress exited with code 127。


object-ingress    | /docker-entrypoint.sh: exec: line 38: /run.sh: not found
object-ingress exited with code 127
object-mailhog    | [APIv1] KEEPALIVE /api/v1/events
object-mailhog    | [APIv1] KEEPALIVE /api/v1/events


5、执行命令,运行容器:643070b10285,报错:Unable to find image ‘643070b10285:latest’ locally 。如图3
执行命令,运行容器:643070b10285,报错:Unable to find image '643070b10285:latest' locally 。

图3



wangqiang@DESKTOP-QLPK8QM:/mnt/e/wwwroot/xxx/object/startup$ docker run 643070b10285 ls -l /
Unable to find image '643070b10285:latest' locally
docker: Error response from daemon: pull access denied for 643070b10285, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.


6、查看容器的日志


wangqiang@DESKTOP-QLPK8QM:/mnt/c/Users/Lenovo$ docker logs 516ee3068762
/docker-entrypoint.sh: exec: line 38: /run.sh: not found
/docker-entrypoint.sh: exec: line 38: /run.sh: not found


7、编辑 run.sh 文件,行分隔符从 CR – Classic Mac OS (\r) 调整为 CRLF – Windows (\r\n)。如图4
编辑 run.sh 文件,行分隔符从 CR - Classic Mac OS (\r) 调整为 CRLF - Windows (\r\n)。

图4

8、再次执行命令,不再报错。  ]]>
https://www.shuijingwanwq.com/2022/01/05/5677/feed/ 0
容器的基础镜像更换后,PHP Core Warning ‘yii\base\ErrorException’ with message ‘Module ‘gd’ already loaded’ https://www.shuijingwanwq.com/2021/11/16/5492/ https://www.shuijingwanwq.com/2021/11/16/5492/#respond Tue, 16 Nov 2021 02:40:47 +0000 https://www.shuijingwanwq.com/?p=5492 Post Views: 246 1、容器的基础镜像更换后,当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=true 时,容器启动失败。报错:PHP Core Warning ‘yii\base\ErrorException’ with message ‘Module ‘gd’ already loaded’。如图1
容器的基础镜像更换后,当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=true 时,容器启动失败。报错:PHP Core Warning 'yii\base\ErrorException' with message 'Module 'gd' already loaded'。

图1



      chmod 0755 yii

      chmod 0755 yii_test

  ... initialization completed.

CHANNEL_PUB_API_CFG_MIGRATE=true

Yii Migration Tool (based on Yii v2.0.41.1)

No new migrations found. Your system is up-to-date.

PHP Core Warning 'yii\base\ErrorException' with message 'Module 'gd' already loaded'

in ./Unknown:0

Stack trace:

#0 [internal function]: yii\base\ErrorHandler->handleFatalError()

#1 {main}


2、当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=false 时,容器启动成功。如图2
当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=false 时,容器启动成功。

图2



      chmod 0755 yii

      chmod 0755 yii_test

  ... initialization completed.

CHANNEL_PUB_API_CFG_MIGRATE=false

running without db migrate

CHANNEL_PUB_API_CFG_CONSOLE=false

copy without console

CHANNEL_PUB_API_CFG_CRONTAB_VTT=false

crontab.php not running

POD_NAMESPACE=ccp

test fail

get environment fail

ENVIRONMENT:default

POD_NAMESPACE=ccp

POD_HOSTIP=192.168.1.46

POD_IP=10.42.2.200


3、当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=true 时,本质上是在执行一系列命令行。


env | grep CHANNEL_PUB_API_CFG_MIGRATE || export CHANNEL_PUB_API_CFG_MIGRATE="false"
if [[ $CHANNEL_PUB_API_CFG_MIGRATE == "true" ]]
then
    php /mcloud/www/ccp_api/yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
    php /mcloud/www/ccp_api/yii migrate --interactive=0
    php /mcloud/www/ccp_api/yii cache/flush-schema db --interactive=0
    php /mcloud/www/ccp_api/yii douyin-web-app/init-sync
    php /mcloud/www/ccp_api/yii qq-tp-app/init-sync
    php /mcloud/www/ccp_api/yii qq-cw-app/init-sync
    php /mcloud/www/ccp_api/yii weibo-weibo-connect-web-app/init-sync
    php /mcloud/www/ccp_api/yii wx-bizplugin-app/init-sync
    php /mcloud/www/ccp_api/yii netease-tp-app/init-sync
elif [[ $CHANNEL_PUB_API_CFG_MIGRATE == "false" ]]
then
    echo "running without db migrate"
else
    echo "please set environment variable CHANNEL_PUB_API_CFG_MIGRATE true or false"
fi


4、决定先在启动成功的容器中手动执行以上命令,以确定究竟是哪个命令导致报错。设置 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=false 。依次执行了前 3 条命令,皆报错。如图3
决定先在启动成功的容器中手动执行以上命令,以确定究竟是哪个命令导致报错。设置 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=false 。依次执行了前 3 条命令,皆报错。

图3



[root@api-console-migrate-5788cbf65c-qkjv2 /]# php /mcloud/www/ccp_api/yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
Yii Migration Tool (based on Yii v2.0.41.1)

No new migrations found. Your system is up-to-date.
PHP Core Warning 'yii\base\ErrorException' with message 'Module 'gd' already loaded'

in ./Unknown:0

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
[root@api-console-migrate-5788cbf65c-qkjv2 /]# php /mcloud/www/ccp_api/yii migrate --interactive=0
Yii Migration Tool (based on Yii v2.0.41.1)

No new migrations found. Your system is up-to-date.
PHP Core Warning 'yii\base\ErrorException' with message 'Module 'gd' already loaded'

in ./Unknown:0

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
[root@api-console-migrate-5788cbf65c-qkjv2 /]# php /mcloud/www/ccp_api/yii cache/flush-schema db --interactive=0
Schema cache for component "db", was flushed.

PHP Core Warning 'yii\base\ErrorException' with message 'Module 'gd' already loaded'

in ./Unknown:0

Stack trace:
#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
#1 {main}
[root@api-console-migrate-5788cbf65c-qkjv2 /]# 


5、在自己的技术博客中搜索:Module ‘gd’ already loaded 。曾经解决过类似的问题。参考网址:https://www.shuijingwanwq.com/2020/06/15/4240/ 6、检查 /usr/local/php/etc/php.ini 中是否存在 gd。存在。如图4
检查 /usr/local/php/etc/php.ini 中是否存在 gd。存在。

图4



;extension = "memcached.so"
extension = "redis.so"
;extension = "mongo.so"
extension = "sockets.so"
extension = "swoole.so"
extension = "mongodb.so"
extension = "rdkafka.so"
extension = "exif.so"
extension = "imagick.so"
extension = "gd.so"
extension=mcrypt.so


7、最终通过在 Dockerfile 中新增:sed -i ‘/gd.so/d’ /usr/local/php/etc/php.ini && \ 以解决此问题。


RUN sed -i 's/open_basedir = .\/:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini && \
    sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 1200/g' /usr/local/php/etc/php.ini && \
    sed -i  '/gd.so/d' /usr/local/php/etc/php.ini && \
    sed -i 's/memory_limit = 2048M/memory_limit = 6144M/g' /usr/local/php/etc/php.ini && \
    sed -i 's/pm.max_children = 20/pm.max_children = 40/g' /usr/local/php/etc/php-fpm.conf



8、升级后,再次运行相关命令。报错:PHP Core Warning ‘yii\base\ErrorException’ with message ‘Module ‘exif’ already loaded’。如法炮制。在 Dockerfile 中新增:sed -i ‘/exif.so/d’ /usr/local/php/etc/php.ini && \ 。 9、依次报错的扩展:sockets。也如此处理。Dockerfile 中最终新增 3 行配置。如图5
依次报错的扩展:sockets。也如此处理。Dockerfile 中最终新增 3 行配置。

图5

10、当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=true 时,容器启动成功。如图6
当 Rancher 环境变量,CHANNEL_PUB_API_CFG_MIGRATE=true 时,容器启动成功。

图6



      chmod 0755 yii

      chmod 0755 yii_test

  ... initialization completed.

CHANNEL_PUB_API_CFG_MIGRATE=true

Yii Migration Tool (based on Yii v2.0.41.1)

No new migrations found. Your system is up-to-date.

Yii Migration Tool (based on Yii v2.0.41.1)

Total 1 new migration to be applied:

	m211104_075052_alter_ccp_tables

*** applying m211104_075052_alter_ccp_tables

    > insert into {{%ccp_platform}} ... done (time: 0.025s)

    > insert into {{%channel_type}} ... done (time: 0.059s)

    > alter column publish_task_id in table {{%ccp_task_log}} to integer(11) NOT NULL DEFAULT 0 COMMENT '关联任务id' ... done (time: 0.116s)

    > alter column account_token in table {{%ccp_platform_account}} to string(500) NOT NULL DEFAULT '' COMMENT '平台账号访问令牌' ... done (time: 0.029s)

    > alter column refresh_token in table {{%ccp_platform_account}} to string(500) NOT NULL DEFAULT '' COMMENT '刷新令牌' ... done (time: 0.023s)

*** applied m211104_075052_alter_ccp_tables (time: 0.264s)

1 migration was applied.

Migrated up successfully.

Schema cache for component "db", was flushed.

抖音的网站应用模型的初始化(同步)成功

模型(企鹅号的第三方服务平台应用)创建成功

模型(企鹅号的内容网站应用)创建成功

模型(微博的微连接的网页应用)创建成功

微信的第三方平台应用模型的初始化(同步)成功

模型(网易号的第三方内容平台应用)创建成功

CHANNEL_PUB_API_CFG_CONSOLE=false

copy without console

CHANNEL_PUB_API_CFG_CRONTAB_VTT=false

crontab.php not running

POD_NAMESPACE=ccp

test fail

get environment fail

ENVIRONMENT:default

POD_NAMESPACE=ccp

POD_HOSTIP=192.168.1.48

POD_IP=10.42.3.235


 ]]>
https://www.shuijingwanwq.com/2021/11/16/5492/feed/ 0
CakePHP 2.x 版本的部署,Warning: SplFileInfo::openFile(/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in /lib/Cake/Cache/Engine/FileEngine.php on line 356 https://www.shuijingwanwq.com/2021/04/12/4850/ https://www.shuijingwanwq.com/2021/04/12/4850/#respond Mon, 12 Apr 2021 02:17:24 +0000 https://www.shuijingwanwq.com/?p=4850 Post Views: 98 1、CakePHP 2.x 版本的部署,Warning: SplFileInfo::openFile(/mcloud/creditshop_back/creditshopback/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in /mcloud/creditshop_back/creditshopback/lib/Cake/Cache/Engine/FileEngine.php on line 356。如图1
CakePHP 2.x 版本的部署,Warning: SplFileInfo::openFile(/mcloud/creditshop_back/creditshopback/app/tmp/cache/persistent/myapp_cake_core_file_map): failed to open stream: Permission denied in /mcloud/creditshop_back/creditshopback/lib/Cake/Cache/Engine/FileEngine.php on line 356。

图1

2、进入目录:/mcloud/creditshop_back/creditshopback/app/tmp/cache/persistent,查看所属用户与用户组,皆为:root。如图2
进入目录:/mcloud/creditshop_back/creditshopback/app/tmp/cache/persistent,查看所属用户与用户组,皆为:root。

图2



[root@back-86667bcfcb-p95js /]# cd /mcloud/creditshop_back/creditshopback/app/tmp/cache/persistent
[root@back-86667bcfcb-p95js persistent]# ls -l
total 20
-rw-rw-r-- 1 root  root    43 Apr  7 20:15 myapp_cake_core_cake_console_zho
-rw-rw-r-- 1 root  root    43 Apr  7 20:15 myapp_cake_core_cake_dev_zho
-rw-rw-r-- 1 nginx nginx  225 Apr  8 10:06 myapp_cake_core_default_zho
-rw-rw-r-- 1 root  root  3239 Apr  7 20:15 myapp_cake_core_file_map
-rw-rw-r-- 1 nginx nginx  633 Apr  8 10:06 myapp_cake_core_method_cache
[root@back-86667bcfcb-p95js persistent]# 


3、参考网址:https://book.cakephp.org/2/zh/installation.html 。设置访问权限。app/tmp 目录及其子目录必须同时能够被 web 服务器和命令行用户写入。


HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`
setfacl -R -m u:${HTTPDUSER}:rwx app/tmp
setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp


4、编辑 Dockerfile。确保在 CakePHP 安装中 app/tmp 目录及其全部子目录可以被 web 服务器用户 写入。


    chown -R 775 /mcloud/creditshop_back/creditshopback/app/tmp/ && \




    cd /mcloud/creditshop_back/creditshopback &&\
    HTTPDUSER=`ps aux | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1` &&\
    setfacl -R -m u:${HTTPDUSER}:rwx app/tmp &&\
    setfacl -R -d -m u:${HTTPDUSER}:rwx app/tmp &&\


5、升级后,Nginx 用户写入成功,访问正常。  ]]>
https://www.shuijingwanwq.com/2021/04/12/4850/feed/ 0
Error processing tar file(exit status 1): unexpected EOF 的排查分析 https://www.shuijingwanwq.com/2021/03/11/4779/ https://www.shuijingwanwq.com/2021/03/11/4779/#respond Thu, 11 Mar 2021 02:41:24 +0000 https://www.shuijingwanwq.com/?p=4779 Post Views: 292 1、在 Jenkins 中构建镜像,报错:Error processing tar file(exit status 1): unexpected EOF。如图1
在 Jenkins 中构建镜像,报错:Error processing tar file(exit status 1): unexpected EOF。

图1



Step 10/10 : RUN chown -R nginx:nginx /mcloud/ &&     chmod 777 /mcloud/cmp_main/data &&     chmod 777 /usr/share/sync.sh &&     chmod 777 /mcloud/cmp_main/attachment &&     chmod +x /config/init/* &&     chmod +x /etc/nginx/conf.d/* &&     chmod +x /etc/supervisord.d/* &&     rm -rf /mcloud/cmp_main/data/tpl/ &&     rm -rf /etc/nginx/conf.d/status.conf
 ---> Running in 800972ee06bc
Error processing tar file(exit status 1): unexpected EOF
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


2、查看 Dockerfile ,应该是 ADD 命令的行数过多了一些,进而导致空间不足。参考网址:https://stackoverflow.com/questions/42784396/docker-error-error-processing-tar-fileexit-status-1-unexpected-eof 。如图2
查看 Dockerfile ,应该是 ADD 命令的行数过多了一些,进而导致空间不足。

图2



ADD code /mcloud/cmp_main
ADD code/build/c_files/ /
ADD code/build/sync.sh /usr/share/sync.sh
ADD code/build/cacheJsSDK.sh /usr/share/cacheJsSDK.sh
ADD code/build/MP_verify_3RUFnkMVef9eh3mJ.txt /mcloud/cmp_main/
ADD code/build/MP_verify_qxIMkC3go7fNqBzb.txt /mcloud/cmp_main/

RUN sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system/disable_functions = system/g' /usr/local/php/etc/php.ini

RUN chown -R nginx:nginx /mcloud/ && \
    chmod 777 /mcloud/cmp_main/data && \
    chmod 777 /usr/share/sync.sh && \
    chmod 777 /mcloud/cmp_main/attachment && \
    chmod +x /config/init/* && \
    chmod +x /etc/nginx/conf.d/* && \
    chmod +x /etc/supervisord.d/* && \
    rm -rf /mcloud/cmp_main/data/tpl/ && \
    rm -rf /etc/nginx/conf.d/status.conf


3、剪切 /build/sync.sh 至 /build/c_files/usr/share/sync.sh。剪切 /build/cacheJsSDK.sh 至 /build/c_files/usr/share/cacheJsSDK.sh。剪切 /build/MP_verify_3RUFnkMVef9eh3mJ.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_3RUFnkMVef9eh3mJ.txt。剪切 /build/MP_verify_qxIMkC3go7fNqBzb.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_qxIMkC3go7fNqBzb.txt。编辑 Dockerfile,删除了 4 行 ADD。如图3
剪切 /build/sync.sh 至 /build/c_files/usr/share/sync.sh。剪切 /build/cacheJsSDK.sh 至 /build/c_files/usr/share/cacheJsSDK.sh。剪切 /build/MP_verify_3RUFnkMVef9eh3mJ.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_3RUFnkMVef9eh3mJ.txt。剪切 /build/MP_verify_qxIMkC3go7fNqBzb.txt 至 /build/c_files/mcloud/cmp_main/MP_verify_qxIMkC3go7fNqBzb.txt。编辑 Dockerfile,删除了 4 行 ADD。

图3



RUN sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system/disable_functions = system/g' /usr/local/php/etc/php.ini

ADD code /mcloud/cmp_main
ADD code/build/c_files/ /

RUN chown -R nginx:nginx /mcloud/ && \
    chmod 777 /mcloud/cmp_main/data && \
    chmod 777 /usr/share/sync.sh && \
    chmod 777 /mcloud/cmp_main/attachment && \
    chmod +x /config/init/* && \
    chmod +x /etc/nginx/conf.d/* && \
    chmod +x /etc/supervisord.d/* && \
    rm -rf /mcloud/cmp_main/data/tpl/ && \
    rm -rf /etc/nginx/conf.d/status.conf


4、再次构建,第一次构建报错:unknown parent image ID sha256:。不过第二次构建成功。如图4
再次构建,第一次构建报错:unknown parent image ID sha256:。不过第二次构建成功。

图4

5、调整前后的镜像大小分别为:4711、3882。大小减少了:4711 – 3882 = 829。如图5
调整前后的镜像大小分别为:4711、3882。大小减少了:4711 - 3882 = 829。

图5

6、另一个可能的原因在于 Dockerfile 刚经过大幅度的修改。此种情况下,建议多构建几次。最终还是可以构建成功。]]>
https://www.shuijingwanwq.com/2021/03/11/4779/feed/ 0
在 jenkins 中构建镜像时,报错:fatal Could not read from remote repository 的解决 https://www.shuijingwanwq.com/2020/08/03/4340/ https://www.shuijingwanwq.com/2020/08/03/4340/#respond Mon, 03 Aug 2020 06:00:44 +0000 https://www.shuijingwanwq.com/?p=4340 Post Views: 104 1、在 jenkins 中构建镜像时,报错:fatal: Could not read from remote repository.。虽然 Packagist 镜像地址已经切换为阿里云:https://mirrors.aliyun.com/composer/ 。查看 Dockerfile。如图1
在 jenkins 中构建镜像时,报错:fatal: Could not read from remote repository.。虽然 Packagist 镜像地址已经切换为阿里云:https://mirrors.aliyun.com/composer/ 。查看 Dockerfile。

图1



RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/cmcp-api && \
    composer install


2、最终决定将 /vendor 目录添加至 Git 仓库:# /vendor,编辑 .gitignore


# Env
/.env

# Composer
# /vendor
composer.phar

# JS
node_modules
spa/npm-debug.log
spa/yarn-error.log


# IDE
.idea
nbproject
.buildpath
.project
.settings

# windows thumbnail cache
Thumbs.db

# Mac DS_Store Files
.DS_Store

# phpunit
phpunit.phar
/phpunit.xml

# Vagrant
/.vagrant

# Tests
tests/codeception/*/_support/_generated/*



3、编辑 Dockerfile,删除与 composer 相关的 4 行命令。构建成功。如图3
编辑 Dockerfile,删除与 composer 相关的 4 行命令。构建成功。

编辑 Dockerfile,删除与 composer 相关的 4 行命令。构建成功。



RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf


 ]]>
https://www.shuijingwanwq.com/2020/08/03/4340/feed/ 0
在容器中删除文件夹:/sobey,基于 Dockerfile 的实现 https://www.shuijingwanwq.com/2020/08/01/4333/ https://www.shuijingwanwq.com/2020/08/01/4333/#respond Sat, 01 Aug 2020 02:28:08 +0000 https://www.shuijingwanwq.com/?p=4333 Post Views: 299 1、Dockerfile 的内容如下


FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx:2.2.20

MAINTAINER shuijingwanwq@163.com

COPY code /mcloud/www/pcs
COPY code/build_docker/c_files/ /

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf


2、由于基础镜像中存在目录:/sobey/www,且是一个空白的目录,现在已经不需要了。而基础镜像一时之间还无法升级,决定在 Dockerfile 中删除文件夹:/sobey。如图1
由于基础镜像中存在目录:/sobey/www,且是一个空白的目录,现在已经不需要了。而基础镜像一时之间还无法升级,决定在 Dockerfile 中删除文件夹:/sobey。

图1

3、新增加一行:RUN rm -rf /sobey。Dockerfile 的内容如下。如图2
新增加一行:RUN rm -rf /sobey。Dockerfile 的内容如下。

图2



FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx:2.2.20

MAINTAINER shuijingwanwq@163.com

COPY code /mcloud/www/pcs
COPY code/build_docker/c_files/ /

RUN rm -rf /sobey

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf


4、查看容器的构建输出。运行正常。如图3
查看容器的构建输出。运行正常。

图3



Step 5/6 : RUN rm -rf /sobey
 ---> Running in 2bf756e0c68e
 ---> ff2ba07c5178
Removing intermediate container 2bf756e0c68e


5、进入容器,目录:/sobey 已经不存在。符合预期。如图4
进入容器,目录:/sobey 已经不存在。符合预期。

图4

]]>
https://www.shuijingwanwq.com/2020/08/01/4333/feed/ 0
在 CentOS 7.5 64 位、PHP 7.4 中报错:PHP Core Warning ‘yii\base\ErrorException’ with message ‘Module ‘zip’ already loaded’ 的分析解决 https://www.shuijingwanwq.com/2020/06/15/4240/ https://www.shuijingwanwq.com/2020/06/15/4240/#respond Mon, 15 Jun 2020 05:33:26 +0000 https://www.shuijingwanwq.com/?p=4240 Post Views: 132 1、在 CentOS 7.5 64 位、PHP 7.4 中报错:PHP Core Warning ‘yii\base\ErrorException’ with message ‘Module ‘zip’ already loaded’,如图1
在 CentOS 7.5 64 位、PHP 7.4 中报错:PHP Core Warning 'yii\base\ErrorException' with message 'Module 'zip' already loaded'

图1



2020/6/12 下午1:15:12PHP Core Warning 'yii\base\ErrorException' with message 'Module 'zip' already loaded'
2020/6/12 下午1:15:12
2020/6/12 下午1:15:12in ./Unknown:0
2020/6/12 下午1:15:12
2020/6/12 下午1:15:12Stack trace:
2020/6/12 下午1:15:12#0 [internal function]: yii\base\ErrorHandler->handleFatalError()
2020/6/12 下午1:15:12#1 {main}


2、查看 phpinfo() 的信息,确认 zip 扩展已经安装。如图2
查看 phpinfo() 的信息,确认 zip 扩展已经安装。

图2

3、检查 /usr/local/php/etc/php.ini 中是否存在 zip。存在。


;extension = "memcached.so"
extension = "redis.so"
;extension = "mongo.so"
extension = "sockets.so"
extension = "swoole.so"
extension = "mongodb.so"
extension = "rdkafka.so"
extension = "exif.so"
extension = "zip.so"
extension = "gd.so"


4、查看 phpinfo() 的 extension_dir,其值:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/ ,如图3
查看 phpinfo() 的 extension_dir,其值:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/

图3

5、进入目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/,查看扩展包,zip、gd 扩展已存在。如图4
进入目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/,查看扩展包,zip、gd 扩展已存在。

图4



[root@5e4d278fdede /]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/
[root@5e4d278fdede no-debug-non-zts-20190902]# ls -l
total 32032
-rwxr-xr-x 1 root root   234763 Apr 16 22:48 exif.so
-rwxr-xr-x 1 root root  1300761 Apr 16 22:48 gd.so
-rwxr-xr-x 1 root root  2791555 Apr 16 23:39 intl.so
-rwxr-xr-x 1 root root   279018 Apr 16 22:48 ldap.so
-rwxr-xr-x 1 root root  4764219 Apr 16 23:40 mongodb.so
-rwxr-xr-x 1 root root  4677222 Apr 16 22:14 opcache.a
-rwxr-xr-x 1 root root  2490202 Apr 16 22:14 opcache.so
-rwxr-xr-x 1 root root   452180 Apr 16 23:38 rdkafka.so
-rwxr-xr-x 1 root root  2485341 Apr 16 23:38 redis.so
-rwxr-xr-x 1 root root   255240 Apr 16 23:42 skywalking.so
-rwxr-xr-x 1 root root   391892 Apr 16 22:14 sockets.so
-rwxr-xr-x 1 root root 12372105 Apr 16 23:41 swoole.so
-rwxr-xr-x 1 root root   226843 Apr 16 22:48 zip.so


6、决定先还原至上一个基础镜像,在上一个基础镜像中,未安装 zip、gd 扩展,也未报错。检查 /usr/local/php/etc/php.ini 中是否存在 zip。不存在。


;extension = "memcached.so"
extension = "redis.so"
;extension = "mongo.so"
extension = "sockets.so"
extension = "swoole.so"
extension = "mongodb.so"
extension = "rdkafka.so"
extension = "exif.so"


7、进入目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/,查看扩展包,zip、gd 扩展不存在。如图5
进入目录:/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/,查看扩展包,zip、gd 扩展不存在。

图5



[root@0bb790b2627f /]# cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/
[root@0bb790b2627f no-debug-non-zts-20190902]# ls -l
total 30484
-rwxr-xr-x 1 root root   234763 Mar 29 22:56 exif.so
-rwxr-xr-x 1 root root  2791843 Mar 29 23:23 intl.so
-rwxr-xr-x 1 root root   279018 Mar 29 22:56 ldap.so
-rwxr-xr-x 1 root root  4764227 Mar 29 23:24 mongodb.so
-rwxr-xr-x 1 root root  4677222 Mar 29 22:56 opcache.a
-rwxr-xr-x 1 root root  2490202 Mar 29 22:56 opcache.so
-rwxr-xr-x 1 root root   452180 Mar 29 23:23 rdkafka.so
-rwxr-xr-x 1 root root  2485341 Mar 29 23:22 redis.so
-rwxr-xr-x 1 root root   255240 Mar 29 23:26 skywalking.so
-rwxr-xr-x 1 root root   391892 Mar 29 22:56 sockets.so
-rwxr-xr-x 1 root root 12372105 Mar 29 23:26 swoole.so


8、最终通过在 Dockerfile 中新增:sed -i ‘/zip.so/d’ /usr/local/php/etc/php.ini && \ 以解决此问题。


RUN sed -i 's/open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini && \
    sed -i 's/max_execution_time = 60/max_execution_time = 300/g' /usr/local/php/etc/php.ini && \
    sed -i 's/;realpath_cache_ttl = 120/realpath_cache_ttl = 1200/g' /usr/local/php/etc/php.ini && \
    sed -i  '/zip.so/d' /usr/local/php/etc/php.ini && \
    sed -i 's/pm.max_children = 20/pm.max_children = 40/g' /usr/local/php/etc/php-fpm.conf


9、检查 /usr/local/php/etc/php.ini 中是否存在 zip。不存在。已经被删除。如图6
检查 /usr/local/php/etc/php.ini 中是否存在 zip。不存在。已经被删除。

图6

10、查看 phpinfo() 的信息,确认 zip 扩展仍然是已经安装。查看 Configure Command,原因在于:’–with-gd’ ‘、’–enable-zip’,zip 扩展默认已经启用。因此,无需要在 php.ini 重新启用。如图7
查看 phpinfo() 的信息,确认 zip 扩展仍然是已经安装。查看 Configure Command,原因在于:'--with-gd' '、'--enable-zip',zip 扩展默认已经启用。因此,无需要在 php.ini 重新启用。

图7

]]>
https://www.shuijingwanwq.com/2020/06/15/4240/feed/ 0
将 /vendor 加入至 Git 仓库后,Docker 部署,升级失败的分析解决 https://www.shuijingwanwq.com/2020/05/11/4130/ https://www.shuijingwanwq.com/2020/05/11/4130/#respond Mon, 11 May 2020 12:03:38 +0000 https://www.shuijingwanwq.com/?p=4130 Post Views: 223

1、编辑 .gitignore,将 /vendor 加入至 Git 仓库,如图1

编辑 .gitignore,将 /vendor 加入至 Git 仓库

图1


# composer vendor dir
# /vendor


2、在 Jenkins 中构建失败,查看 Console Output。如图2

在 Jenkins 中构建失败,查看 Console Output

图2


[0mThe command '/bin/sh -c chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     chmod +x /usr/local/bin/composer &&     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ &&     cd /mcloud/www/pcs-api &&     composer install' returned a non-zero code: 1
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


3、Docker 部署,删除 composer install。编辑 Dockerfile。如图3

Docker 部署,删除 composer install。编辑 Dockerfile。

图3


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer install



RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf


4、在 Jenkins 中构建成功。如图4

在 Jenkins 中构建成功。

图4

5、在 Rancher 中启动失败,查看日志。如图5

在 Rancher 中启动失败,查看日志。

图5


2020/5/8 下午2:48:45
2020/5/8 下午2:48:45  ... initialization completed.
2020/5/8 下午2:48:45
2020/5/8 下午2:48:45 PCS_API_CFG_MIGRATE=true


6、编辑 build/c_files/config/init/console_init.sh。删除 $PCS_API_CFG_MIGRATE == “true” 的相关命令。如图6

编辑 build/c_files/config/init/console_init.sh。删除 $PCS_API_CFG_MIGRATE == "true" 的相关命令。

图6

7、在 Rancher 中启动成功,查看日志。如图7

在 Rancher 中启动成功,查看日志。

图7


2020/5/8 下午2:48:45
2020/5/8 下午2:48:45  ... initialization completed.
2020/5/8 下午2:48:45
2020/5/8 下午2:48:45 PCS_API_CFG_MIGRATE=true


8、进入容器,手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。未成功运行,因为无相应输出。如图8

进入容器,手动执行 $PCS_API_CFG_MIGRATE == "true" 的相关命令。未成功运行,因为无相应输出。

图8

9、进入将 /vendor 加入至 Git 仓库前的容器。手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。成功运行,因为有相应输出。如图9

进入将 /vendor 加入至 Git 仓库前的容器。手动执行 $PCS_API_CFG_MIGRATE == "true" 的相关命令。成功运行,因为有相应输出。

图9

10、在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。未成功运行,报错。如图10

在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == "true" 的相关命令。未成功运行,报错。

图10


PS E:\wwwroot\pcs-api-develop> ./yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
PHP Warning:  require(E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/src/Codeception/function.php): fa
iled to open stream: No such file or directory in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php on line 6
6

Warning: require(E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/src/Codeception/function.php): failed
to open stream: No such file or directory in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php on line 66
PHP Fatal error:  require(): Failed opening required 'E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/s
rc/Codeception/function.php' (include_path='.;C:\php\pear') in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.
php on line 66

Fatal error: require(): Failed opening required 'E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/src/Co
deception/function.php' (include_path='.;C:\php\pear') in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php o
n line 66


11、文件 E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/src/Codeception/function.php 不存在,如图11

文件 E:\wwwroot\pcs-api-develop\vendor\composer/../codeception/verify/src/Codeception/function.php 不存在

图11

12、进入将 /vendor 加入至 Git 仓库前的容器。文件 \vendor\composer/../codeception/verify/src/Codeception/function.php 存在。如图12

进入将 /vendor 加入至 Git 仓库前的容器。文件 \vendor\composer/../codeception/verify/src/Codeception/function.php 存在。

图12

13、查看 E:\wwwroot\pcs-api\vendor\codeception\verify,其目录下存在相应的文件。且 Git 显示是已经提交至仓库。如图13

查看 E:\wwwroot\pcs-api\vendor\codeception\verify,其目录下存在相应的文件。且 Git 显示是已经提交至仓库。

图13

14、进入将 /vendor 加入至 Git 仓库前的本地环境。发现 \vendor\codeception\verify 已经存在于 Git 中。只不过是 master 分支。如图14

进入将 /vendor 加入至 Git 仓库前的本地环境。发现 \vendor\codeception\verify 已经存在于 Git 中。只不过是 master 分支。

图14

15、最终决定切换至 master 分支,合并 develop 分支的代码。再推送至远程的 master 分支。在远程仓库中文件:\vendor\composer/../codeception/verify/src/Codeception/function.php 仍然不存在。如图15

最终决定切换至 master 分支,合并 develop 分支的代码。再推送至远程的 master 分支。在远程仓库中文件:\vendor\composer/../codeception/verify/src/Codeception/function.php 仍然不存在。

图15

16、删除目录:E:\wwwroot\pcs-api\vendor\codeception\verify\.git,将未显示已经提交至仓库的文件,添加至仓库。如图16、17

删除目录:E:\wwwroot\pcs-api\vendor\codeception\verify\.git,将未显示已经提交至仓库的文件,添加至仓库。

图16

 

删除目录:E:\wwwroot\pcs-api\vendor\codeception\verify\.git,将未显示已经提交至仓库的文件,添加至仓库。

图17

17、在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。未成功运行,报错,但是 /codeception/verify 相应的错误已经得到解决。参考步骤 16 同样处理。后续在运行命令的过程中报错的类似问题,皆可以如此处理。


PS E:\wwwroot\pcs-api-develop> ./yii migrate --migrationPath=@yii/log/migrations/ --interactive=0
PHP Warning:  require(E:\wwwroot\pcs-api-develop\vendor\composer/../myclabs/deep-copy/src/DeepCopy/deep_copy.php): faile
d to open stream: No such file or directory in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php on line 66

Warning: require(E:\wwwroot\pcs-api-develop\vendor\composer/../myclabs/deep-copy/src/DeepCopy/deep_copy.php): failed to
open stream: No such file or directory in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php on line 66
PHP Fatal error:  require(): Failed opening required 'E:\wwwroot\pcs-api-develop\vendor\composer/../myclabs/deep-copy/sr
c/DeepCopy/deep_copy.php' (include_path='.;C:\php\pear') in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php
 on line 66

Fatal error: require(): Failed opening required 'E:\wwwroot\pcs-api-develop\vendor\composer/../myclabs/deep-copy/src/Dee
pCopy/deep_copy.php' (include_path='.;C:\php\pear') in E:\wwwroot\pcs-api-develop\vendor\composer\autoload_real.php on l
ine 66


18、在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。成功运行。如图18

在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == "true" 的相关命令。成功运行。

图18

19、进入将 /vendor 加入至 Git 仓库前的本地环境。执行命令:composer install。成功运行。如图19

进入将 /vendor 加入至 Git 仓库前的本地环境。执行命令:composer install。成功运行。

图19


PS E:\wwwroot\pcs-api-feature-plan-tonglian> composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files


20、在本地环境中全新部署,执行命令:composer install。未成功运行。如图20

在本地环境中全新部署,执行命令:composer install。未成功运行。

图20


PS E:\wwwroot\pcs-api-develop> composer install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Nothing to install or update
Generating autoload files


  [RuntimeException]
  Could not scan for classes inside "E:\wwwroot\pcs-api-develop\vendor/sebastian/object-enumerator/src/" which does n
  ot appear to be a file nor a folder


install [--prefer-source] [--prefer-dist] [--dry-run] [--dev] [--no-dev] [--no-custom-installers] [--no-autoloader] [--n
o-scripts] [--no-progress] [--no-suggest] [-v|vv|vvv|--verbose] [-o|--optimize-autoloader] [-a|--classmap-authoritative]
 [--apcu-autoloader] [--ignore-platform-reqs] [--] []...



21、实际上,第 16、17 步骤,可以通过执行命令:composer require codeception/verify myclabs/deep-copy 来解决,而无需一定要将这 2 个包提交至 Git 仓库中。不过,即使采用此方案,仍然会存在第 20 步骤中所存在的问题。而且还会改变 /vendor/composer 中的其他文件。此方案不太可取。如图21

实际上,第 16、17 步骤,可以通过执行命令:composer require codeception/verify myclabs/deep-copy 来解决,而无需一定要将这 2 个包提交至 Git 仓库中。不过,即使采用此方案,仍然会存在第 20 步骤中所存在的问题。而且还会改变 /vendor/composer 中的其他文件。此方案不太可取。

图21

22、最终决定,先删除掉 /vendor ,提交至 Git 仓库,执行命令:composer install –no-dev。–no-dev:跳过 require-dev 字段中列出的包。再将 /vendor 提交至 Git 仓库。因为,已经确定,–dev:安装 require-dev 字段中列出的包 ( 这是一个默认值 )。提交至 Git 仓库仅能够提交空目录。如图22

最终决定,先删除掉 /vendor ,提交至 Git 仓库,执行命令:composer install --no-dev。--no-dev:跳过 require-dev 字段中列出的包。再将 /vendor 提交至 Git 仓库。因为,已经确定,--dev:安装 require-dev 字段中列出的包 ( 这是一个默认值 )。提交至 Git 仓库仅能够提交空目录。

图22

23、执行命令:composer install。安装 require-dev 字段中列出的包。再将 /vendor 提交至 Git 仓库。如图23

执行命令:composer install。安装 require-dev 字段中列出的包。再将 /vendor 提交至 Git 仓库。

图23

24、在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == “true” 的相关命令。成功运行。不符合预期。如图24

在本地环境中全新部署,手动执行 $PCS_API_CFG_MIGRATE == "true" 的相关命令。成功运行。不符合预期。

图24

25、查看全新部署的文件,目录:\codeception\verify、\vendor\myclabs\deep-copy 皆存在。如图25

查看全新部署的文件,目录:\codeception\verify、\vendor\myclabs\deep-copy 皆存在。

图25

26、在 /vendor 目录中搜索:.git,不存在相应的目录。而之前执行命令:composer install。未成功运行。在 /vendor 目录中搜索:.git,存在相应的目录。如图26

在 /vendor 目录中搜索:.git,不存在相应的目录。而之前执行命令:composer install。未成功运行。在 /vendor 目录中搜索:.git,存在相应的目录。

图26

27、编辑 build/c_files/config/init/console_init.sh。恢复 $PCS_API_CFG_MIGRATE == “true” 的相关命令。在 Rancher 中启动成功,查看日志。如图27

编辑 build/c_files/config/init/console_init.sh。恢复 $PCS_API_CFG_MIGRATE == "true" 的相关命令。在 Rancher 中启动成功,查看日志。

图27

28、在另一个产品中,在 /vendor 目录中搜索:.git,存在相应的目录。如图28

在另一个产品中,在 /vendor 目录中搜索:.git,存在相应的目录。

图28

29、在 Rancher 中启动失败,查看日志。如图29

在 Rancher 中启动失败,查看日志。

图29


2020/5/9 下午7:01:07 PHP Fatal Error 'yii\base\ErrorException' with message 'Class 'wartron\yii2uuid\behaviors\UUIDBehavior' not found'
2020/5/9 下午7:01:07
2020/5/9 下午7:01:07 in /mcloud/www/channel-pub-api/common/behaviors/UUIDBehavior.php:7
2020/5/9 下午7:01:07
2020/5/9 下午7:01:07 Stack trace:
2020/5/9 下午7:01:07 #0 [internal function]: yii\base\ErrorHandler->handleFatalError()
2020/5/9 下午7:01:07 #1 {main}


30、由于仅有一个目录:.git,决定采用第 16、17 步骤的方案。在 Rancher 中启动成功,查看日志。如图30

由于仅有一个目录:.git,决定采用第 16、17 步骤的方案。在 Rancher 中启动成功,查看日志。

图30

31、在 Jenkins 中构建时间的前后对比,分别为:13分钟、43秒。如图31

在 Jenkins 中构建时间的前后对比,分别为:13分钟、43秒。

图31

]]>
https://www.shuijingwanwq.com/2020/05/11/4130/feed/ 0
Docker 部署,将目录 sobey 修改为 mcloud,构建镜像时,报错:composer install returned a non-zero code: 255 的分析解决 https://www.shuijingwanwq.com/2019/07/23/3368/ https://www.shuijingwanwq.com/2019/07/23/3368/#respond Tue, 23 Jul 2019 09:42:15 +0000 http://www.shuijingwanwq.com/?p=3368 Post Views: 139 1、Docker 部署,在 Jenkins 上构建镜像时,报错:composer install returned a non-zero code: 255,如图1
Docker 部署,在 Jenkins 上构建镜像时,报错:composer install returned a non-zero code: 255

图1



Step 7 : RUN chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ &&     cd /mcloud/www/pcs-api &&     composer install
 ---> Running in a73905f2bdbc
Do not run Composer as root/super user! See https://getcomposer.org/root for details
The command '/bin/sh -c chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ &&     cd /mcloud/www/pcs-api &&     composer install' returned a non-zero code: 255
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


2、Dockerfile 执行命令失败的代码如下


FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx112-php72:0.1.12

MAINTAINER wangqiang@chinamcloud.com

RUN sed -i 's/open_basedir = .\/:\/mcloud:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/mcloud:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini

COPY code /mcloud/www/pcs-api
COPY code/build/c_files/ /

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer install


3、编辑 Dockerfile,构建成功,可见失败的原因在于:composer install


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api


4、编辑 Dockerfile,查看 composer 的版本信息与全局配置选项的列表


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer --version && \
    composer config --global --list


5、在 Jenkins 上构建镜像时,仍然报错:composer install returned a non-zero code: 255,可见,composer 相关的命令是执行不了的,不仅是 composer install,如图2
在 Jenkins 上构建镜像时,仍然报错:composer install returned a non-zero code: 255,可见,composer 相关的命令是执行不了的,不仅是 composer install

图2

6、编辑 Dockerfile,下载 Composer 的可执行文件,局部安装


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    cd /mcloud/www/pcs-api && \
    curl -sS https://getcomposer.org/installer | php && \
    php composer.phar install


7、在 Jenkins 上构建镜像时,报错:php composer.phar install returned a non-zero code: 1,如图3
在 Jenkins 上构建镜像时,报错:php composer.phar install returned a non-zero code: 1

图3



RUN chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     cd /mcloud/www/pcs-api &&     curl -sS https://getcomposer.org/installer | php &&     php composer.phar install
 ---> Running in 28a2ad979c18
All settings correct for using Composer

Warning: is_dir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud) in Standard input code on line 495

Warning: is_dir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud) in Standard input code on line 685
Unable to create Composer home directory "/root/.composer": mkdir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud)
The command '/bin/sh -c chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     cd /mcloud/www/pcs-api &&     curl -sS https://getcomposer.org/installer | php &&     php composer.phar install' returned a non-zero code: 1
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


8、醒悟过来,原因在于 Dockerfile 文件,之前执行了批量替换,将 sobey 批量替换为 mcloud,决定仅替换其中的 3 处,其余 2 处的 mcloud 还原为 sobey,如图4
醒悟过来,原因在于 Dockerfile 文件,之前执行了批量替换,将 sobey 批量替换为 mcloud,决定仅替换其中的 3 处,其余 2 处的 mcloud 还原为 sobey

图4



FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx112-php72:0.1.12

MAINTAINER wangqiang@chinamcloud.com

RUN sed -i 's/open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini

COPY code /mcloud/www/pcs-api
COPY code/build/c_files/ /

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer install


9、Docker 部署,在 Jenkins 上构建镜像成功,后续有待于基础镜像升级之后,才能够全部执行替换了的。如图5
Docker 部署,在 Jenkins 上构建镜像成功,后续有待于基础镜像升级之后,才能够全部执行替换了的。

图5

]]>
https://www.shuijingwanwq.com/2019/07/23/3368/feed/ 0