我正在尝试构建映像并将其部署到VPS。
我正在使用
成功运行该应用struct SomeData { int n; } s1{2}, s2{4};
std::vector<SomeData*> data{&s1, &s2};
for (auto& item : Adaptor{data}) {
std::cout << item.n << "\n";
}
然后我用
构建它docker-compose up
当我尝试在本地或VPS槽底坞云上进行测试时:
docker build -t mystore .
容器工作正常,但是当我点击http://0.0.0.0:4000/
时我得到了:
/的OperationalError 无法翻译主机名&#34; db&#34;解决:名称或服务未知
我已将postgresql.conf listen_addresses更改为&#34; *&#34;,没有任何更改。 posgresql日志为空。我正在运行MacOS。
这是我的DATABASE配置:
docker run -p 4000:8000 mystore
这是Dockerfile
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'user',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '5432',
}
}
这是docker-compose.yml文件:
FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN \
apt-get -y update && \
apt-get install -y gettext && \
apt-get clean
ADD requirements.txt /app/
RUN pip install -r /app/requirements.txt
ADD . /app
WORKDIR /app
EXPOSE 8000
ENV PORT 8000
CMD ["uwsgi", "/app/saleor/wsgi/uwsgi.ini"]
答案 0 :(得分:1)
您忘记将links
添加到web
图片
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
env_file: common.env
depends_on:
- db
- redis
- search
links: # <- here
- db
- redis
- search
ports:
- '8000:8000'
volumes:
- .:/app:Z
答案 1 :(得分:1)
检查可用的网络。默认情况下有3个:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
db07e84f27a1 bridge bridge local
6a1bf8c2d8e2 host host local
d8c3c61003f1 none null local
我的docker compose的简化设置。只有postgres:
version: '2'
services:
postgres:
image: postgres
name: postgres
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
ports:
- '5432:5432'
networks:
random:
networks:
random:
我给postgres容器命名postgres并调用了postgres服务,我创建了一个名为&#39; random
&#39; (最后的命令),我已经将服务postgres随机添加到网络中。如果您没有指定网络,您将看到docker-compose创建了一个自我命名的网络。
启动docker-compose后,您将拥有4个网络。一个新的桥网称为随机。
通过检查例如postgres容器,检查您的docker组成环境的网络是:
我是在网络中创建的,random
&#39;:
$ docker inspect postgres
它在网络中random
&#39;。
"Networks": {
"random": {..
现在在同一个网络中启动您的mystore
容器:
$ docker run -p 4000:8000 --network=random mystore
您可以使用docker inspect
再次查看。确保您可以在mystore容器中exec
并尝试ping postgres
。它们部署在同一网络中,因此这应该是可能的,并且您的容器应该能够将名称postgres
转换为地址。
答案 2 :(得分:0)
,添加一个网络,然后像这样添加你的容器:
每个容器定义添加:
networks:
- mynetwork
然后,在文件末尾添加:
networks:
mynetwork: