Tag: docker docker

自定义的Docker MySQL的构build将不会运行

我正在编写我自定义的Dockerfile来设置Mysql 5.7。 作为这个的一部分,我想设置s3备份。 但是,当我尝试运行/创builddocker实例失败 这是Dockerfile: # Start with a base mysql:5.6 image FROM mysql:5.7 MAINTAINER Ikenna N. Okpala <me@ikennaokpala.com> USER root # RUN locale-gen ENV DEBIAN_FRONTEND noninteractive ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.en ENV LC_ALL en_US.UTF-8 ENV PS_NGX_EXTRA_FLAGS –with-cc=/usr/bin/gcc –with-ld-opt=-static-libstdc++ # Add all base dependencies RUN apt-get update -y RUN apt-get install -y build-essential checkinstall […]

习惯性的方式pipe理Docker中的持久数据存储

设置 我在本地机器上有10多个镜像,未来可能会有数TB的镜像,在这种情况下,它将被托pipe在aws上。 这些图像将被提供给一些网站,也是一个机器学习pipe道的input。 现在我正在开发我的本地机器。 源代码位于path/to/src ,数据位于path/to/images 。 我已经使用Dockerfilebuild立了一个Docker环境: FROM bamos/openface ADD . /face-off WORKDIR /face-off RUN pip install -r requirements.txt EXPOSE 5000 CMD [ "python", "app.py" ] 和docker-compose文件: version: '2' services: web: build: . image: face-off-web command: python app.py ports: – "5000:5000" volumes: – .:/face-off redis: image: "redis:alpine" 问题 由于我在Docker容器中开发,我需要访问path/to/images所有path/to/images 。 现在让我们保持简单,并说我使用预先指定的path读取图像到磁盘。 我认为我的select是: 一个显而易见的方法是将所有的图像移动到path/to/src ,但这对我来说似乎很脏。 […]

Riak容器在装入数据卷时不启动

以下命令完美工作,riak服务按预期启动: docker run –name = riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/ schemas:/ etc / riak / schema basho / riak-ts 本地schemas目录安装成功,其中的sql文件被riak读取。 但是,如果我尝试安装riak的data或log目录,则riak服务在15秒后不会启动并超时: docker run –name = riak -d -p 8087:8087 -p 8098:8098 -v $(pwd)/ logs:/ var / log / riak -v $(pwd)/ schemas:/ etc / riak / schema basho /了Riak-TS docker logs riak输出: […]

使用“allow”指令将对nginx服务器位置的访问限制到特定的Docker容器

编辑:塔伦的答案正是我所要求的。 欧根的答案也是一个很好的解决scheme。 我最终接受塔伦的答案是正确的,但使用欧根的。 如果你有类似的问题,并担心其他容器访问nginx状态服务器,请使用Tarun的答案。 如果你愿意坚持Docker的正常主机名称,请使用Eugen's。 +++原始问题+++ 我有一个应用程序,我用docker-compose构build。 我正试图通过DataDog集成监控。 我正在使用DataDog的代理容器,到目前为止一切正常。 我想通过调整本教程来让nginx监视起来并运行。 我的应用程序在docker-compose文件中定义如下: version: '2' services: flask: restart: always image: me/flask-app command: /home/app/flask/start_app.sh expose: – "8080" nginx: restart: always build: ./nginx command: /runtime/start_nginx.sh ports: – "80:80" – "443:443" expose: – "81" volumes: – app-static:/app-static:ro links: – flask:flask datadog-agent: image: me/datadog-agent env_file: ./datadog-agent/dev.env links: – flask – nginx […]

将本地目录装入Docker容器

我想用Docker做一个项目,用Python做一些数据处理。 假设我的代码位于一个名为code的目录下(包含多个用于分析不同步骤的python文件),并将数据存储在目录data 。 一个解决scheme就是像这样添加代码和数据: # Dockerfile FROM debian:stable-slim RUN apt-get update && apt-get install -y python-pip ADD code /code ADD data /data WORKDIR /code CMD python 然后我可以使用docker run -i someName pythonFile1.py从code运行其中的一个文件。 但是我在这里遇到的问题是我需要重新运行docker build . 每次我改变代码或数据。 所以我试图用docker-compose将这两个目录包含到卷中: #docker-compose.yml version: '2' services: myProject: build: . volumes: – ./code:/code – ./data:/data # Dockerfile FROM debian:stable-slim RUN apt-get update […]

在docker中只写入源文件的可写node_modules

我的webapp/Dockerfile看起来像这样: FROM project_base-container EXPOSE 9100 # … # Using copy instead of mount, since we need to write in sub-directories like node_modules etc. COPY . /usr/src/app/webapp CMD ["bash", "webapp/scripts/build_and_run.sh", "setup_deps_and_run_app"] 我想让应用程序能够读取源代码,并写入到像node_modules这样的子文件夹中,但是我不希望这些更改来自我的本地机器。 因此,我有两个select: 在node install更改–prefix='/tmp' ,并将src node install为ro 复制src,然后容器可以写任何想要的地方。 解决scheme1破坏浩劫,因为现在我必须复制/链接像package.json,index.html等所有文件的前缀位置。 解决scheme2就是我上面所做的。 当我使用COPY时,一切都很好。 但是现在的问题是,在源代码发生变化之后,我想每次更新映像中的源代码: sudo docker-compose down && sudo docker-compose up –build -d 但是COPY命令是由dockercaching的,即使在文件改变之后也不会被更新。 TL; DR:我有一个src文件夹'webapp',我想从主机挂载为readonly,但我的应用程序想写入子文件夹'webapp / […]

为什么在运行docker容器之后,mysql数据所有权会更改为systemd-journal-remote

我有mysql数据库存储在/home/mysql而不是/var/lib/mysql 。 这个目录曾经被mysql拥有。 但是,当我运行命令docker-compose up这个yml文件: version: '3' services: mariadb: image: mariadb restart: always volumes: – /home/mysql:/var/lib/mysql elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:5.6.4 environment: – "ES_JAVA_OPTS=-Xms750m -Xmx750m" – bootstrap.memory_lock=false site: build: . volumes: – "./app:/app" links: – mariadb:mysql environment: – DOCKER_IP=172.19.0.2 depends_on: ['elasticsearch','mariadb'] ports: – "3000:3000" Docker容器能够运行,但是/home/mysql中的整个文件夹和文件都由systemd-journal-remote ,这导致node服务器无法连接到mariadb 。 我必须停止ib_logfile0实例,恢复mysql文件夹的所有权并删除ib_logfile0和ib_logfile1 。 为什么mount /home/mysql会导致这样一个致命的问题? 更新: 我的解决scheme是添加user: "mysql" : version: '3' […]

尝试通过Docker Compose将NodeJS应用连接到MongoDB

我正在跟着我的应用程序的MongoDB + NodeJS教程。 一切工作没有Docker ..我实际上可以让应用程序工作,直到它需要连接到MongoDB。 如果我的应用程序没有看到MongoDB,它将打印出一个错误,并停止。 这是我的文件 .ENV NODE_VIEWS_PATH=../ NODE_PUBLIC_PATH=../ MONGODB_URI='mongodb://127.0.0.1:27017/myappsdb' … Dockerfile FROM node:carbon # Create app directory WORKDIR /usr/src/mahrio COPY package*.json ./ RUN npm install # If you are building your code for production # RUN npm install –only=production COPY . . EXPOSE 6085 CMD ["npm", "start"] 泊坞窗,compose.yml version: "2" services: app: container_name: […]

Docker – 运行一个容器时执行一个bash

我有我的docker-compose文件的这部分: php-fpm: build: ./docker/php container_name: php-fpm-symfony links: – db ports: – 9000:9000 – 8448:8448 – 8000:8000 working_dir: /var/www/html/ volumes: – .:/var/www/html volumes_from: – data tty: true env_file: – ./docker.env entrypoint: /command.sh 这里是我的Dockerfile: FROM php:7.0.8-fpm ADD command.sh /command.sh RUN chmod 777 /command.sh ENTRYPOINT ["/command.sh"] 我在根的command.sh #!/usr/bin/env bash git config –global user.email "${gitEmail}" git config –global user.name […]

了解docker端口映射

请解释下面的输出: docker ps ExanpleContainter Ports ——– 10.10.10.10:443->443/tcp, 0.0.0.0:1937->1937/tcp 和, docker inspect ExanpleContainter "Ports": { "1937/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "1937" } ], "443/tcp": [ { "HostIp": "10.10.10.10", "HostPort": "443" } ] 我想了解如何完成映射和哪个端口映射到哪里?