Rey*_*rPM 6 php docker docker-compose
我一直在尝试使用Docker和Docker Compose构建一个PHP cli容器,我想让它保持活着而不需要在其中运行任何PHP脚本.
我试过自己的Dockerfile:
FROM ubuntu:16.04
ENV PATH="/root/.composer/vendor/bin:${PATH}"
RUN apt-get update && \
apt-get -y -qq install software-properties-common \
xvfb \
locales && \
locale-gen en_US.UTF-8 && \
export LC_ALL=en_US.UTF-8 && \
export LANG=en_US.UTF-8 && \
add-apt-repository ppa:ondrej/php && \
apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated install \
php7.1-curl \
php7.1-cli \
php7.1-bcmath \
php7.1-json \
php7.1-intl \
php7.1-mbstring \
php7.1-mcrypt \
php7.1-mysql \
php7.1-xml \
php7.1-xsl \
php7.1-zip \
curl \
git \
wget \
pkg-config && \
apt-get clean && \
apt-get autoremove && \
rm -rf /var/lib/apt/lists/*
COPY config /
RUN sh /usr/local/bin/install.sh
ENTRYPOINT bash -C '/entrypoint.sh';'bash'
CMD ["php", "-a"]
Run Code Online (Sandbox Code Playgroud)
另外这个(从主PHP图像扩展):
FROM php:7-cli-alpine
ENV PATH="/root/.composer/vendor/bin:${PATH}"
COPY config /
RUN sh /usr/local/bin/install.sh
WORKDIR /var/wwww
CMD ["php", "-a"]
Run Code Online (Sandbox Code Playgroud)
该docker-compose.yml有什么,但这样的:
version: '3.3'
services:
webserver:
build:
context: .
restart: on-failure
env_file: .env
environment:
UID: ${UID}
GID: ${GID}
Run Code Online (Sandbox Code Playgroud)
如果你想尝试一下,最后这里是完整的存储库.
问题是什么?通过运行docker-compose up --build --force-recreate它来构建容器后,用代码退出,0但是docker-composer logs没有任何帮助,因为它没有任何帮助.
从命令行看一下以下输出(对于这篇文章的第二个Dockerfile,第一个与更多东西几乎相同):
$ docker-compose up --build --force-recreate
Building webserver
Step 1/6 : FROM php:7-cli-alpine
7-cli-alpine: Pulling from library/php
90f4dba627d6: Pull complete
623a0217e4bc: Pull complete
ecbf507e7e3c: Pull complete
79a82dee0025: Pull complete
457716c6bb05: Pull complete
62e36287ffd0: Pull complete
507e98c003bc: Pull complete
b25e699baa37: Pull complete
Digest: sha256:ecae911bd22279d4883ffdc631afddc434641c67eedf49914fc62dafb5329663
Status: Downloaded newer image for php:7-cli-alpine
---> 1e563ea5f552
Step 2/6 : ENV PATH "/root/.composer/vendor/bin:${PATH}"
---> Running in 29b65c1d7def
---> d11c62bb5cf5
Removing intermediate container 29b65c1d7def
Step 3/6 : COPY config /
---> e42022d1de91
Step 4/6 : RUN sh /usr/local/bin/install.sh
---> Running in 749230f42e9e
All settings correct for using Composer
Downloading...
Composer (version 1.5.2) successfully installed to: /usr/local/bin/composer
Use it: php /usr/local/bin/composer
Changed current directory to /root/.composer
Loading composer repositories with package information
Updating dependencies
Package operations: 21 installs, 0 updates, 0 removals
- Installing hirak/prestissimo (0.3.7): Downloading (100%)
- Installing symfony/stopwatch (v3.3.10): Downloading (100%)
- Installing symfony/process (v3.3.10): Downloading (100%)
- Installing symfony/polyfill-php72 (v1.5.0): Downloading (100%)
- Installing paragonie/random_compat (v2.0.11): Downloading (100%)
- Installing symfony/polyfill-php70 (v1.5.0): Downloading (100%)
- Installing symfony/options-resolver (v3.3.10): Downloading (100%)
- Installing symfony/finder (v3.3.10): Downloading (100%)
- Installing symfony/filesystem (v3.3.10): Downloading (100%)
- Installing symfony/event-dispatcher (v3.3.10): Downloading (100%)
- Installing psr/log (1.0.2): Downloading (100%)
- Installing symfony/debug (v3.3.10): Downloading (100%)
- Installing symfony/polyfill-mbstring (v1.5.0): Downloading (100%)
- Installing symfony/console (v3.3.10): Downloading (100%)
- Installing php-cs-fixer/diff (v1.1.0): Downloading (100%)
- Installing gecko-packages/gecko-php-unit (v2.2): Downloading (100%)
- Installing doctrine/lexer (v1.0.1): Downloading (100%)
- Installing doctrine/annotations (v1.5.0): Downloading (100%)
- Installing composer/semver (1.4.2): Downloading (100%)
- Installing friendsofphp/php-cs-fixer (v2.7.1): Downloading (100%)
- Installing squizlabs/php_codesniffer (3.1.0): Downloading (100%)
Writing lock file
Generating optimized autoload files
Cache directory does not exist (cache-vcs-dir):
Clearing cache (cache-repo-dir): /root/.composer/cache/repo
Clearing cache (cache-files-dir): /root/.composer/cache/files
Clearing cache (cache-dir): /root/.composer/cache
All caches cleared.
---> ff310362f4a5
Removing intermediate container 749230f42e9e
Step 5/6 : WORKDIR /var/wwww
---> fe10fd52d6b6
Removing intermediate container 6e472a693c0c
Step 6/6 : CMD php -a
---> Running in 789688d1346a
---> b1286e96580b
Removing intermediate container 789688d1346a
Successfully built b1286e96580b
Successfully tagged dockerlamp_webserver:latest
Recreating dockerlamp_webserver_1 ...
Recreating dockerlamp_webserver_1 ... done
Attaching to dockerlamp_webserver_1
webserver_1 | Interactive shell
webserver_1 |
dockerlamp_webserver_1 exited with code 0
$ docker-compose logs
Attaching to dockerlamp_webserver_1
webserver_1 | Interactive shell
webserver_1 |
Run Code Online (Sandbox Code Playgroud)
如何在不需要运行PHP脚本的情况下保持容器运行?
注意:您可能会问为什么不只是构建
php-fpm|apache但事情是我不需要任何Web服务器,因为该容器将仅用于命令行项目(这是一个WIP)
您正在运行的php -a是REPL,它需要交互式TTY.所以你需要在你的作品中启用那些
version: '3.3'
services:
webserver:
build:
context: .
restart: on-failure
env_file: .env
environment:
UID: ${UID}
GID: ${GID}
tty: true
stdin_open: true
Run Code Online (Sandbox Code Playgroud)
稍后如果您需要附加它来运行命令,您将需要使用docker
docker attach <containernameOrID>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1907 次 |
| 最近记录: |