Tag: bash

Bash恢复数据库到一个WordPress + Piwik解决scheme的docker容器

对于https://github.com/ellakcy/piwik-with-wordpress我做了一个恢复bash脚本,以恢复从https://github.com/ellakcy/piwik-with-wordpress/blob生成的备份/ master / scripts /预备份脚本 主要想法是用包含备份的tarball设置path,并重新创build卷所在的文件夹。 脚本如下: #!/bin/bash # Printing functions black='\E[30;40m' red='\E[31;40m' green='\E[32;40m' yellow='\E[33;40m' blue='\E[34;40m' magenta='\E[35;40m' cyan='\E[36;40m' white='\E[37;40m' #Echo a string with color cecho () # Color-echo. # Argument $1 = message # Argument $2 = color { local default_msg="No message passed." # Doesn't really need to be a local variable. message=${1:-$default_msg} # Defaults […]

用Travis CItestingASP.NET Core Docker容器

所以我configuration了我的.travis.yml来构build和testing我的ASP.NET Core项目,但现在我已经configuration它在docker中运行。 到目前为止这么好,我有Dockerfile的构build,但后来我开始计算: 我应该在Docker Container还是外面运行testing? 或者它甚至是重要的? 如果我应该这样做,这怎么可能实现呢? 因为dotnet test没有**/*/支持,我的容器不运行我的bash脚本。 更新: 还是应该在外面构build和testing,然后创builddockerimage? Dockerfile是: FROM microsoft/dotnet:latest ARG source=. WORKDIR /usr/src/project COPY $source . RUN dotnet restore EXPOSE 5000 CMD dotnet build **/*/project.json 而.sh是: #!/bin/bash cd test/ for D in `find ./ -maxdepth 1 -type d` do if [ -a ./project.json ] then ( cd ${D}; dotnet test;) […]

如何在$ PATH上执行主机的命令?

我正在使用Composer作为Docker容器的一部分安装Laravel Installer。 Laravel是全局安装的,意思是~/.composer/vendor ,然后在~/.composer/vendor/bin下添加一个可执行文件。 我将~/.composer/vendor/bin目录添加到~/.composer/vendor/bin中的$PATH中,如下所示: ENV PATH="~/.composer/vendor/bin:${PATH}" 如果我运行命令docker exec -it php-fpm bash并从容器内运行echo $PATH我得到了以下内容: # echo $PATH /opt/remi/php71/root/usr/bin:/opt/remi/php71/root/usr/sbin:~/.composer/vendor/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 如果我在容器中运行命令laravel ,我得到了以下内容: # laravel Laravel Installer 1.3.3 Usage: command [options] [arguments] Options: -h, –help Display this help message -q, –quiet Do not output any message -V, –version Display this application version –ansi Force ANSI output –no-ansi Disable ANSI […]

坏取代

我有一个包含这一行的bash脚本: dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 这在OSX上运行良好。 但是,当我移动它的脚本在一个运行Debian的Docker容器上运行时,它会失败,并显示以下消息: Bad substitution 任何想法为什么发生这种情况

如果镜像有一个入口脚本,Docker无法启动交互式shell

我的定制图像以 ENTRYPOINT [ "/bin/bash", "-c", "/home/tool/entry_script.sh" ] 这是绝对必要的,因为在运行时,用户必须做的第一件事情是更新一个已经克隆的github项目,用户通常会忘记这么做。 但是,当我尝试启动使用 docker run -it –rm my_image /bin/bash 我可以看到ENTRYPOINT脚本正在执行,但是然后容器退出。 由于-it标志,我希望执行/bin/bash和shell保持交互模式。 我究竟做错了什么? 更新:我添加我的入口脚本 #!/bin/bash echo "UPDATING GIT REPO"; cd /home/tool/cloned_github_tools_root git pull git submodule init git submodule update echo "Entrypoint ended"; 其实我没有在运行时的错误

jenkins容器中的docker工具(与装载的docker套接字)没有finddocker守护进程来连接

我刚刚开始了一个jenkins docker容器,里面有一个如下的docker插槽: docker run -d \ –publish 8080:8080 \ –publish 50000:50000 \ –volume /my_jenkins_home:/var/jenkins_home \ –volume /var/run/docker.sock:/var/run/docker.sock \ –restart unless-stopped \ –name my_jenkins_container \ company/my_jenkins:latest 然后我像这样打开容器: docker exec -it my_jenkins_container bash jenkinspipe道脚本中的tool 'docker' docker tool 'docker'命令自动在以下path中安装了/var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker二进制文件: /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker 但是,当我尝试从该docker二进制码运行docker命令( 假设它将连接到已挂载在/var/run/docker.sock的docker套接字 ),它会返回以下错误 : $ /var/jenkins_home/tools/org.jenkinsci.plugins.docker.commons.tools.DockerTool/docker/bin/docker images Cannot connect to the Docker daemon. Is the docker daemon running […]

在java应用程序中收集Docker的输出

我在我的Java应用程序中使用ProcessBuilder运行代码在Docker上执行一些代码,但是我无法从它检索输出。 BufferedReader不从容器返回的InputStream中读取任何内容。 有没有一个具体的方法来检索Docker的输出? 我从来没有遇到过从bash执行输出的麻烦,所以我想也许docker工人以某种方式做不同的事情。 任何想法,将不胜感激 以下是代码片段: Process dockerCommand; ProcessBuilder builder = new ProcessBuilder("bash","-c","sudo docker images"); builder.redirectErrorStream(true); builder.redirectOutput(ProcessBuilder.Redirect.INHERIT); builder.redirectError(ProcessBuilder.Redirect.INHERIT); dockerCommand = builder.start(); dockerCommand.waitFor(); List<String> result = new ArrayList<>(); try (BufferedReader reader = new BufferedReader(new InputStreamReader(dockerCommand.getInputStream())) { String line = reader.readLine(); while (line != null) { result.add(line); line = reader.readLine(); } } catch (IOException exc) {}

泊坞窗不能指定容器连接

docker configure: root@ubuntu> ps -ef | grep docker root xxxxx /usr/bin/dockerd -H fd:// -b=br0 –icc=false –iptables=true root@ubuntu> ps -ef | grep docker root xxxxx /usr/bin/dockerd -H fd:// -b=br0 –icc=false –iptables=true 启动'web'容器: docker run -d –name web -p 8080:80 php-fpm:5.4 开始“testing”容器: docker run -dit –name test –link web:web blackhole/ubuntu:0.1 bash iptablesfilter: root@ubuntu> sudo iptables -L -n […]

使用envvariablesprepend命令 – 包括子命令

我需要将一个环境variables添加到Laravel的php artisan migrate命令中,以便与docker一起使用,例如: env DB_HOST=127.0.0.1 php artisan migrate 我在我的.zshrc文件中创build了一个函数,如下所示: function migrate() { (env DB_HOST=127.0.0.1 php artisan migrate $*) } 然而,Laravel的指挥结构的工作方式是这样的: migrate migrate:install Create the migration repository migrate:refresh Reset and re-run all migrations migrate:reset Rollback all database migrations migrate:rollback Rollback the last database migration migrate:status Show the status of each migration 所以这不适用于这样的命令: migrate:refresh –seed 有没有一种方法可以编写函数,也为所有这些“子”命令添加variables?

由于应用程序,无法执行docker容器

昨天我重新启动我的数据库泊坞窗容器。 但是我的应用程序仍然可以正常连接: 以下行不再起作用 docker exec -i -t database_1 bash 相反,它给了我这个错误: unable to find user postgres: no matching entries in passwd file 我不知道为什么它不只是给我bash