docker - docker nginx 容器不包含 nginx?
问题描述
我有一个在单个 docker 容器上运行的 laravel 项目。我使用 docker-composer.yml 来配置容器。nginx:latest
我在 Dockerfile 中使用基本映像。由于某种原因,当我尝试使用命令启动我的项目时,docker-compose up
我收到了这个错误:
web_1 | 2019-05-10 15:51:14,035 INFO spawnerr: can't find command '/usr/sbin/nginx'
web_1 | 2019-05-10 15:51:15,037 INFO spawnerr: can't find command '/usr/sbin/nginx'
web_1 | 2019-05-10 15:51:17,040 INFO spawnerr: can't find command '/usr/sbin/nginx'
web_1 | 2019-05-10 15:51:20,050 INFO spawnerr: can't find command '/usr/sbin/nginx'
web_1 | 2019-05-10 15:51:20,050 INFO gave up: nginx entered FATAL state, too many start retries too quickly
我很惊讶,所以我查看了容器内部,但在docker exec -ti mycontainername bash
任何地方都找不到 nginx。我尝试使用nginx -v
,
whereis nginx
, cd /etc/nginx
<-- 目录不存在。
所以我尝试创建一个简单的容器,它只包含 nginx。理论上我应该可以去localhost:80
看看Nginx的欢迎信息吧?
docker run --rm -d -p 80:80 --name my-nginx nginx
好吧,没有消息,当我查看容器内部时,我在
docker exec my-nginx
任何地方都找不到 nginx,但是如果我运行命令apt-get nginx
,它表明 nginx 已经是最新版本。
完整的 Docker-COMPOSE.YML
version: '1'
services:
web:
build:
context: ./
# dockerfile: web.dockerfile
working_dir: /var/www/html
# volumes_from:
# - app
ports:
- 8080:80
volumes:
- ./:/var/www/html
- /var/run/docker.sock:/var/run/docker.sock
environment:
完整的 Dockerfile:
FROM nginx:latest
RUN apt-get update && apt-get install -y php-gd
RUN apt-get -y install php7.2-zip
#COPY app /var/www/html/app
#COPY artisan /var/www/html/app/artisan
#COPY bootstrap /var/www/html/bootstrap
#COPY config /var/www/html/config
#COPY database /var/www/html/database
#COPY public /var/www/html/public
#COPY resources /var/www/html/resources
#COPY routes /var/www/html/routes
#COPY storage /var/www/html/storage
#COPY vendor /var/www/html/vendor
#COPY artisan /var/www/html/artisan
#COPY composer.json /var/www/html/composer.json
COPY entrypointcust.sh /entrypointcust.sh
RUN chmod +x /entrypointcust.sh
EXPOSE 80
WORKDIR /var/www/html/old
# Add crontab file in the cron directory
ADD cron /etc/cron.d/appcron
# Give execution rights on the cron job
RUN chmod 0644 /etc/cron.d/appcron
RUN /usr/bin/crontab /etc/cron.d/appcron
# Create the log file to be able to run tail
#RUN touch /var/log/cron.log
#RUN touch /var/www/html/storage/logs/laravel.log
#RUN chown -R www-data:www-data /var/www/html
#RUN chmod -R 777 /var/www/html/storage
ENTRYPOINT ["/bin/bash", "-c", "/entrypointcust.sh"]
我错过了什么?
解决方案
推荐阅读
- javascript - VS Code 自动完成/智能感知不起作用
- ios - 如何获取服务器地址和远程标识符?
- c# - WPF如何在用户控件和主视图之间绑定数据?
- sql - 使用 T-SQL 查询从 XML 中提取数据
- mysql - Node.JS,获取功能和连接到 XAMPP DB 不起作用
- groovy - 在 0.229 构建 presto 时出现常规异常
- ios - ios13如何实现可扩展企业单点登录
- reactjs - RangeError: Invalid typed array length: -4095 when running my react web app
- c++ - 如果我在各自的 char 数组的声明中为其提供额外的元素,是否会自动设置 NUL?
- django - 将 Python 应用部署到 Windows Server 上的 Azure 应用服务