我有一个Dockerfile,我指的是docker-compose.yml.
我希望docker-compose.yml中的卷安装发生在Dockerfile之前RUN.
Dockerfile:
FROM node
WORKDIR /usr/src/app
RUN npm install --global gulp-cli \
&& npm install
ENTRYPOINT gulp watch
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
version: '2'
services:
build_tools:
build: docker/gulp
volumes_from:
- build_data:rw
build_data:
image: debian:jessie
volumes:
- .:/usr/src/app
Run Code Online (Sandbox Code Playgroud)
首先完成Dockerfile,然后从docker-compose安装它是完全合理的,但有没有办法解决它.
我想保持Dockerfile的通用性,同时从compose中传递更多特定的位.也许这不是最好的做法?
我目前正在运行一个docker-compose堆栈,用于基本集成测试,包括量角器测试运行器,服务于网页的nodejs服务器和服务于java后端的wildfly服务器.
堆栈是从我的构建服务器(concourse ci)中的dind(docker in docker)容器中运行的.
但似乎容器在完成量角器测试时不会终止.
因此,由于wildfly和nodejs的容器仍在运行,因此构建任务永远不会完成......
如何在测试结束时使作曲成功或失败?
# Test runner
test-runner:
image: "${RUNNER_IMG}"
privileged: true
links:
- client
- server
volumes:
- /Users/me/frontend_test/client-devops:/protractor/project
- /dev/shm:/dev/shm
entrypoint:
- /entrypoint.sh
- --baseUrl=http://client:9000/dist/
- /protractor/conf-dev.js
- --suite=remember
# Client deployment
client:
image: "${CLIENT_IMG}"
links:
- server
# Server deployment
server:
image: "${SERVER_IMG}"
Run Code Online (Sandbox Code Playgroud) 有没有办法在使用 docker-compose 时设置堆栈名称?
目前它采用文件夹名称(这是一个可怕的区域),这会导致一些混乱。
例如,我们有几个项目有一个包含数据库堆栈的数据库文件夹。在单个主机上运行这些时,我们现在有几个数据库堆栈。
我正在使用自定义脚本运行Flask应用程序。还是尝试,无论如何。
我在Windows 10上,应用程序应在Linux Docker容器中使用以下命令运行:
docker-compose up api
Run Code Online (Sandbox Code Playgroud)
Docker-compose是version 1.23.2。在dockerfile中,该api服务通过以下命令运行:
command: python manage.py run --host "0.0.0.0" --with-threads
Run Code Online (Sandbox Code Playgroud)
在尝试启动时,我看到了异常
OSError: [Errno 8] Exec format error: '/api/manage.py'
Run Code Online (Sandbox Code Playgroud)
我最初以为这将是“可怕的Windows行尾”,再次给我,但是dos2unix在我的所有源文件上运行都无法解决问题。
如何避免此错误?
manage.py
docker-compose up api
Run Code Online (Sandbox Code Playgroud)
完整回溯
api_1 | Traceback (most recent call last):
api_1 | File "manage.py", line 22, in <module>
api_1 | cli()
api_1 | File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
api_1 | return self.main(*args, **kwargs)
api_1 | File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 380, in main
api_1 | …Run Code Online (Sandbox Code Playgroud) 我刚刚阅读了有关在Docker中运行Rails开发环境的这篇文章.好文章,效果很好.设置完所有后,我决定继续设置生产环境.
目标:
我希望rake db:create && rake db:migrate每次运行我的泊坞窗图像.
问题:
如果我移动数据库创建和迁移步骤...
docker-compose run app rake db:create
docker-compose run app rake db:migrate
Run Code Online (Sandbox Code Playgroud)
...进入Dockerfile ...
RUN rake db:create && rake db:migrate
Run Code Online (Sandbox Code Playgroud)
......会引发错误......
could not translate host name "postgres" to address: Name or service not known
Run Code Online (Sandbox Code Playgroud)
...因为host我database.yml...
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: postgres
host: postgres
port: 5432
development:
<<: *default
database: rails_five_development
Run Code Online (Sandbox Code Playgroud)
...设置为postgres我的docker-compose.yml...中指定的服务名称
version: "2"
services:
postgres: …Run Code Online (Sandbox Code Playgroud) 我想我不明白.首先,我创建了docker-machine:
$ docker-machine create -d virtualbox dev
$ eval $(docker-machine env dev)
Run Code Online (Sandbox Code Playgroud)
然后我写了Dockerfile和docker-compose.yml:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
version: '2'
services:
db:
image: postgres
web:
build: .
restart: always
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
links:
- db
Run Code Online (Sandbox Code Playgroud)
最后,我构建并启动了图像:
$ docker-compose build --no-cache
$ docker-compose start
Run Code Online (Sandbox Code Playgroud)
我检查了我的虚拟机的ip
$ docker-machine ip dev
Run Code Online (Sandbox Code Playgroud)
并在我的浏览器中成功打开了该网站.但是当我对代码进行一些更改时 - 没有任何反应.所以我登录到"dev"机器:
$ docker-machine ssh dev
Run Code Online (Sandbox Code Playgroud)
我没找到我的代码!所以我登录了docker"web"图片: …
我不确定是否有明显的东西逃脱了我或者是否只是不可能但是我正在尝试用来自docker hub的图像组成一个完整的应用程序堆栈.
其中一个是mysql,它支持通过卷添加自定义配置文件,并从已安装的目录运行.sql文件.
但是,我在运行docker-compose的机器上有这些文件,而不是在主机上.在运行entrypoint/cmd之前,是否无法指定本地计算机中的文件复制到容器中?我是否真的必须为这种情况创建一切的本地图像?
我可以通过以下命令从命令行运行一个具有访问GPU的tensorflow容器
$ sudo docker run --runtime=nvidia --rm gcr.io/tensorflow/tensorflow:latest-gpu
我希望能够从docker-compose运行这个容器.可以从中指定--runtime标志docker-compose.yml吗?
docker docker-compose tensorflow nvidia-docker tensorflow-gpu
我正在尝试运行一个容器.我已将图像上传到私有Docker注册表.我想写一个compose文件来下载和部署图像.但我想将TAG名称作为docker-compose run命令中的变量传递.我的compose文件如下所示.如何将KB_DB_TAG_VERSION的值作为docker-compose up命令的一部分传递?
version: '3'
services:
db:
#build: k-db
user: "1000:50"
volumes:
- /data/mysql:/var/lib/mysql
container_name: k-db
environment:
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
image: XX:$KB_DB_TAG_VERSION
image: k-db
ports:
- "3307:3306"
Run Code Online (Sandbox Code Playgroud) 我正在尝试docker-compose up在我的终端中执行命令。首先,我导航到找到 docker-compose.yaml 的文件目录。然后我写命令。服务器在端口 80 上。我收到以下错误:
Traceback (most recent call last):
File "site-packages/docker/api/client.py", line 205, in _retrieve_server_version
File "site-packages/docker/api/daemon.py", line 181, in version
File "site-packages/docker/utils/decorators.py", line 46, in inner
File "site-packages/docker/api/client.py", line 228, in _get
File "site-packages/requests/sessions.py", line 543, in get
File "site-packages/requests/sessions.py", line 530, in request
File "site-packages/requests/sessions.py", line 643, in send
File "site-packages/requests/adapters.py", line 498, in send
requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionRefusedError(61, 'Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call …Run Code Online (Sandbox Code Playgroud) docker-compose ×10
docker ×8
dockerfile ×3
api ×1
concourse ×1
flask ×1
php ×1
python ×1
server ×1
tensorflow ×1
windows ×1