Tag: docker dockerfile

主pipe没有启动到我的docker集装箱(Laravel项目)

主pipe没有启动到我的容器,我无法运行我的php artisan queue:work我的laravel项目的php artisan queue:work命令。 从我的Dockerfile中提取 # Add worker to supervisor config file COPY laravel-worker.conf /etc/supervisor/conf.d/ CMD ["/usr/bin/supervisord"] 这里是laravel-worker.conf: [program:laravel-worker] command=php /var/www/test/current/artisan queue:work –tries=3 user=myuser process_name=%(program_name)s_%(process_num)d directory=/var/www/test/current stdout_logfile=/tmp/supervisord.log redirect_stderr=true numprocs=1 autostart=true autorestart=true 当我进入容器时,主pipe服务没有启动: root@e7227ef40f63:/# service supervisor status supervisord is not running. 过程如下: root@e7227ef40f63:/# ps -aux | grep supervisor root 1 0.0 0.0 4328 652 ? […]

使用–user参数来创build一个具有Dockerfile容器的用户

我有一个docker容器得到通过随机生成 – 用户ID。 我想要做的是在docker文件中创build一个用户的ID。 像这样RUN adduser –disabled-password –uid ${IDHERE} –gid 0 –gecos container container 在docker中可能吗? 我只需要获取传递给–user的id。 PS:我知道这听起来像是一个奇怪的方式来实施docker集装箱。 该容器是由一个守护进程来pipe理容器的,而我正在部署的应用程序需要一个文件在执行应用程序的用户的home目录中,或者它被segfualts,但是当在容器中运行whoami ,显示从–user婴儿车,而不是我放在docker文件中的东西。

Docker容器主机名

我想在启动期间设置docker容器主机名(HOSTNAME env var),这是在dockerfile的ENTRYPOINT中指定的.sh脚本: #!/bin/sh export HOSTNAME=something-$(hostname) java $JAVA_OPTS -jar /app.jar 我想要为jvm看到这个新的主机名。 我所得到的就是标准的docker主机名称: / # env HOSTNAME=04dbf311a3be 当我设置主机名手动使用上面的导出上面的容器启动后,一切正常。 一切正在使用组合堆栈文件在群集中运行。 编辑1:我没有这样做在容器build立,但在启动过程中 编辑2:要清楚,我有什么: DOCKER SWARM: CONTAINER1 HOSTNAME=391fa2c7e184 CONTAINER2 HOSTNAME=39123a43242asd4 CONTAINER3 HOSTNAME=123123123123 我想要的是: CONTAINER1 HOSTNAME=APPNAME-391fa2c7e184 CONTAINER2 HOSTNAME=APPNAME-123fa2c7e184 CONTAINER3 HOSTNAME=APPNAME-343fa345e184 并希望这在n-containers的启动过程中被自动设置 我如何尝试做到这一点: 我尝试在容器启动时调用start.sh文件(在dockerfile中指向ENTRYPOINT命令)中设置此项: #!/bin/sh export HOSTNAME=something-$(hostname) java $JAVA_OPTS -jar /app.jar 没有效果,HOSTNAME没有被改变

我想从dockerfile安装我的ejabberd,图像正在build设成功,但是当我点击运行命令容器立即退出

运行容器后立即退出。 我想如何保持这个容器和ejabberd运行? 我应该在dockerfile中做什么修改? 任何帮助表示赞赏。 这是我的dockerfile: FROM ubuntu:16.04 RUN set -x && \ apt-get update && \ apt-get install -y \ make \ automake \ gcc \ g++\ libexpat1 \ libexpat1-dev \ libyaml-0-2 \ libyaml-dev \ erlang \ openssl \ zlib1g \ zlib1g-dev \ libpam0g \ libtext-iconv-perl \ libssl-dev\ git \ postgresql postgresql-contrib RUN apt-key adv […]

如何为给定的Linux文件夹内的所有文件提供默认权限

我需要使在特定的Linux目录中创build的任何文件具有777权限。 我想让所有的用户能够在这个文件夹下的所有文件上进行读,写和执行。 那么什么是最好的方法或Linux命令来实现呢? 我正在做的是,我旋转了两个单独的容器,一个用于Nginx服务器,另一个用于PHP:FPM应用服务器,以托pipeLaravel 5.4应用程序。 请考虑以下情况。 我有一个Docker应用程序容器A(PHP:FPM),用于将Web应用程序文件提供给Docker容器B(Nginx)。 现在,当我访问网站时,我通过networking容器提供网页。 这两个容器都在同一个networking中,我将我的应用程序容器中的卷共享到我的Web容器。 但是,当Web容器试图读取应用程序容器上的文件时,我得到如下所示的错误: stream或文件“/var/www/storage/logs/laravel.log”无法打开:无法打开stream:权限被拒绝 所以我在我的docker文件中添加了RUN chmod -R 777 storage 。 但是这不是解决问题的方法。 所以我也尝试使用SGID来解决这个问题,在我的dockerfile中添加一行作为RUN chmod -R ug+rwxs storage 。 仍然没有解决许可的问题。 在一个单独的笔记,有趣的是,在我的MAC泊坞窗容器这工作没有任何问题(我的意思是没有添加chmod -R 777到文件夹或使用SGID设置许可到我的泊坞窗文件中的文件夹)。 但是,如果在Linux AMI EC2实例(Amazon AMI Linux EC2)上运行相同的代码,则会发生权限问题。 那么我该如何解决这个问题呢?

Docker构build失败:返回一个非零的代码:1

Dockerfile1 FROM ubuntu:latest MAINTAINER ME RUN apt-get update RUN apt-get update && apt-get install -y net-tools \ && apt-get install inetutils-traceroute \ && apt-get install iputils-ping \ && apt-get install xinetd telnetd Dockerfile2 FROM ubuntu:latest MAINTAINER ME RUN apt-get update RUN apt-get update && apt-get install -y net-tools RUN apt-get update && apt-get install inetutils-traceroute […]

运行在Docker Container中创buildMySQL数据库的JavaScript函数

我正在尝试编写一个Dockerfile来运行一个MySQL数据库,但是为了让我使用这个数据库,我想运行一个javascript函数来为我创build表。 我尝试安装MySQL和nodejs,然后像运行节点./generateDB.js一样运行文件,但是它无法find所需的文件。 Dockerfile: https ://gist.github.com/yoloOnTheBattlefield/725d1095756de7dbdd317bddf6f7b4a6 入口点: https ://gist.github.com/yoloOnTheBattlefield/b8ea042dacebd228f29873984ec40671 config文件夹包含一个json文件,它设置与MySQL连接的端口 文件夹结构: /node_modules /SQLFiles /config 1.FirstFile.Table.sql 2.SecondFile.Table.sql generateDB.js package.json

Docker入口与REST API调用make守护进程

我有场景,我有一个Docker容器(Pid == 1)。 它在相同的容器中调用REST API,从而创build另一个subprocess。 不知何故儿童进程在后台丢失,其他容器无法通话。 基本上我需要让subprocess处理容器的主要过程。 Entrypoint.sh #!/usr/bin/env bash set -e PIDFILE="/var/run/mock.pid" /opt/mock/mock.init start #/sbin/start-stop-daemon –start –pidfile /var/log/mock_start.log \ –make-pidfile –startas mock_start.sh exec ./mock_start.sh mock_start.sh curl –request POST \ –url http://0.0.0.0:50007/8072 \ –header 'content-type: application/json' \ –data '{ "port":"8072" }' 我需要基本上是curl的subprocess,做父进程。 所以当我docker ps; 我应该能够看到容器运行。

奇怪的Git错误在Docker NPM安装

我有一个工作的Dockerfile,直到一天前它似乎中断。 我没有做任何改变我的依赖 – 但我得到以下错误: [91mnpm ERR! code ENOGIT [0m [91mnpm ERR! No git binary found in $PATH npm ERR! npm[0m [91m ERR! Failed using git. npm ERR! Please check if you have git installed and in your PATH. [0m [91m npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/_logs/2017-09-28T21_12_50_050Z-debug.log […]

Docker Ubuntu环境variables

在我的docker图像的构build阶段,我想为每个后续的“运行”命令自动设置一些环境variables。 但是,我想从docker conatiner中设置这些variables,因为设置它们取决于一些内部逻辑。 使用dockerfile“ENV”命令并不好,因为不能依靠内部逻辑。 (它不能依赖docker容器内运行的命令) 通常(如果这不是docker)我会设置我的〜/ .profile文件。 但是,docker不会在非交互式shell中加载这个文件。 所以在他们这一刻,我必须运行每个docker运行命令: RUN bash -c "source ~/.profile && do_something_here" 但是,当我每次运行一个bash命令时都必须重复这个操作,这是非常单调乏味的。 是否有一些其他的“档案”文件,我可以用它来代替。